问题提出:
其它文中提到的从大图中取模板以用于模板匹配的问题,在使用中发现大于800X600的图形,opencv显示就无法和实际像素位置一一对应了。
1. 使用resize
我们这边直接将大分辨率图改变尺寸到800X600. 并记录变换比列。
Mat Framtmp;
Framtmp = imread("1.bmp"); //读入的大分辨率图
resize(Framtmp,frame,Size(800,600),0,0,CV_INTER_LINEAR);//直接将图改变分辨率。
按照博文opencv鼠标响应处理和vS2010 list模板类的应用的方式取得选取的模板框架坐标。
2.取得真实坐标
double ratiox=double(Framtmp.cols)/800; //x 比例
double ratioy=double(Framtmp.rows)/600;//y比例
真实坐标; x方向均乘以ratiox y方向均乘以ratioy。
3.取得真实模板图
Framtmp(Rect(Rectx,Recty,Rectwidth,Rectheight)).copyTo(Mobanbmp);
//Rectx ,Recty,Rectwidth,Rectheight为根据比例计算过来的矩形框。
4.存储模板图
sprintf(file,"P%d.bmp",Curmoban.Id); //照片根据模板Id叠加
imwrite( file, Mobanbmp );
5.总结: 经过调试验证800x600以上分辨率的图形均可以正常显示,正常画框,正常存取模板。