こばや小林 2024-02-10 13:16 采纳率: 85.2%
浏览 0
已结题

createTrackBar

OpenCV4中createTrackBar第三参数必须是int*类型吗?如何使调试窗能够调试float和double类型参数?

  • 写回答

4条回答 默认 最新

  • GISer Liu 2024-02-10 13:17
    关注

    该回答引用自GPT-3.5,由博主GIS_Liu编写:

    在OpenCV4中,createTrackBar函数的第三个参数确实必须是int*类型,因为它用于接收滑动条的位置值。但是,你可以通过一些技巧来实现调试窗口能够调试floatdouble类型参数。

    解决思路如下:

    1. floatdouble类型参数映射到整数范围内。
    2. 在滑动条回调函数中将整数值转换回原始的floatdouble类型参数。

    下面是一个示例代码,演示了如何实现这一点:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    
    // 定义全局变量,用于存储参数值
    double g_paramValue = 0.0;
    
    // 定义滑动条回调函数
    void onTrackbar(int pos, void* userdata) {
        // 将整数值转换为float类型
        double value = pos / 100.0; // 假设范围是0到100
        g_paramValue = value;
        // 在这里可以添加你的处理逻辑,比如更新图像等
        cout << "参数值: " << g_paramValue << endl;
    }
    
    int main() {
        // 创建一个名为"调试窗口"的窗口
        namedWindow("调试窗口");
    
        // 创建一个滑动条,参数为"参数名称",范围是0到100,回调函数为onTrackbar
        createTrackbar("参数名称", "调试窗口", nullptr, 100, onTrackbar);
    
        // 主循环,等待键盘输入
        while (true) {
            // 这里可以添加你的处理逻辑,比如显示图像等
            // 如果按下ESC键,则退出循环
            if (waitKey(10) == 27) {
                break;
            }
        }
    
        return 0;
    }
    

    在这个示例中,我们将范围映射为0到100,但你可以根据实际需求进行调整。在onTrackbar回调函数中,我们将整数值除以100.0得到double类型的参数值,并将其存储在全局变量g_paramValue中。然后你可以在回调函数中添加你的处理逻辑,比如更新图像等。

    这样,你就可以在调试窗口中调试floatdouble类型的参数了。

    img

    如果该回答解决了您的问题,请采纳!如果没有,请详述问题所在!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月20日
  • 已采纳回答 2月12日
  • 创建了问题 2月10日

悬赏问题

  • ¥15 CPLEX用OPL编写的混合整数线性优化问题。
  • ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
  • ¥15 前端预览docx文件,文件从后端传送过来。
  • ¥15 层次聚类和蛋白质相似度
  • ¥25 主成分分析中的第一第二主成分分别代表哪些参数
  • ¥15 oracle数据库查询语句问题
  • ¥15 有没有c++绘制算法的佬们吗救孩一下
  • ¥15 android 蓝牙闪退
  • ¥15 绝缘子污秽comsol仿真参数
  • ¥15 labelme生成的json有乱码?