本算法是为了实现摄像头模组定点对焦功能,当然也可以进行手动选择ROI获取相关数据。算法逻辑:鼠标在QT 的控件上点击,获取该点坐标(x,y),然后设置ROI区域长宽width,heigh,然后获取ROI区域左上角点((x-width/2),(y+height/2)),即鼠标点击的点为ROI区域的中心
步骤:
1.获取QT控件的鼠标点击坐标,我需要在Qlabel上获取鼠标点击坐标,需要重写QLabel,加上鼠标事件,然后把相应的Qlabel控件提升为重写的QLabel,
2.获取ROI左上角,并判短是否会有边缘越界问题。
1 int xx, yy;//左上角坐标 2 int w, h;//控件的宽,高 3 int ww,hh;//ROI区域宽、高 4 xx = x - ww/2;//x为鼠标点击的横坐标 5 yy = y + hh/2;//y为鼠标点击的纵坐标 6 if (xx > (w-ww))//判断边缘 7 { 8 xx = (w-ww);//留有刚好够ROI区域的xx坐标 9 10 } 11 if (yy > h)//判断边缘 12 { 13 yy = h; 14 } 15 if (xx < 0)//判断边缘 16 { 17 xx = 0;//判断边缘 18 } 19 if (yy < ww) 20 { 21 yy = ww;//留有刚好够ROI区域的yy坐标 22 } 23 img(Rect(width, height, 150, 150)).copyTo(imgROI);//将img中ROI区域的数据传到imgROI中