读书人

相干cvSetImageROI()和cvResetImageRO

发布时间: 2013-11-05 14:40:42 作者: rapoo

有关cvSetImageROI()和cvResetImageROI()函数的困惑
int main(int argc,char*argv[])
{
IplImage * img = cvLoadImage("D:\\picture\\201310.jpg");
IplImage * dst = cvCreateImage(cvSize(img->width/2,img->height/2),img->depth,img->nChannels);
cvSetImageROI(img,cvRect(0,0,120,120));
dst = cvCloneImage(img);
cvResetImageROI(img);
cout<<"img width = "<< img->width<<endl;
cout<<"img height ="<< img->height<<endl;
cout<<"dst width = "<<dst->width<<endl;
cout<<"dst height ="<< dst->height<<endl;
cvShowImage("my img",img);
cvShowImage("dst",dst);
cvWaitKey();
return 0;

}
以上是我做的关于这两个函数的测试,因为在程序中涉及到。我先用cvSetImageROI获取感兴趣区域,并复制给dst,再使用cvResetImageROI()释放感兴趣区域,显示源图像img和dst(见下图),但是我获取两图像的width和height,却是一样大小,很困惑,求教~相干cvSetImageROI()和cvResetImageROI()函数的困惑 cvSetImageROI(?) cvResetImageROI() opencv
[解决办法]

引用:
我返回他们的width,height,
"cout<<"img width = "<< img->width<<endl;
cout<<"img height ="<< img->height<<endl;
cout<<"dst width = "<<dst->width<<endl;
cout<<"dst height ="<< dst->height<<endl;"
得到的结果都255,255;255,255;可是显示的图像大小却是(255,255),(120,120),不理解的就是这里,不好意思,表述不清晰。

第一 声明 我只看过很少的学习opencv 我想你也是书上的例子吧
第二 遇到问题 分析问题 解决问题 其实你也可以得 只是你没静下心来
你可以去用程序验证你的问题了 其实你已经解决了百分之80了
剩下的就是反推了
cvSetImageROI(img,cvRect(0,0,120,120));
dst = cvCloneImage(img);
第一个函数
cvSetImageROI 里面的参数cvRect(0,0,120,120) 只是改变图片的显示位置 和像素的大小
并没有改变这副图片的像素
所以cout<<"img width = "<< img->width<<endl;
cout<<"img height ="<< img->height<<endl;
cout<<"dst width = "<<dst->width<<endl;
cout<<"dst height ="<< dst->height<<endl;
他们都是一样的

也就是说取cvResetImageROI() 只是改变img的显示位置的参数cvRect 这是一种类型 你按f12 查看
或者百度查看,这个函数并不改变图片的本身

推理完毕 按道理讲 没有第二种解释 会比我这个好 所以我的回答是正确的

我也是新手 只不过接触了2天opencv 剩下的就是你自己的逻辑分析 以结果 分析结果

读书人网 >C语言

热点推荐