opencv error:assertion failed src.depth==dst.depth&&...

caryhn 2015-11-30 03:54:14
各位老师:
请帮忙指点,我想在一幅图像上去兴趣域,然后把兴趣域拷贝到一个图像变量中,计算该图像变量的灰度特征值,但在拷贝图像是出现问题,不知道怎么解决。代码如下:

int _tmain(int argc, _TCHAR* argv[])
{
IplImage *src;
src=cvLoadImage("D:\\5.BMP",0);
IplImage *dst;
CvRect rect;

//基于给定的矩形设置感兴趣区域ROI
rect.x=135;
rect.y=94;
rect.width=60;
rect.height=60;
// dst=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,1);//创建图像空间
dst=cvCreateImage(cvGetSize(src),src->depth,src->nChannels);
//创建窗口
cvNamedWindow("src",CV_WINDOW_AUTOSIZE);
cvNamedWindow("dst",CV_WINDOW_AUTOSIZE);
//设置ROI区域
cvSetImageROI(src,rect);
cvShowImage("src",src);
cvWaitKey(0);
//提取ROI
cvCopy(src,dst);
//取消设置
cvResetImageROI(src);
//显示图像
cvShowImage("src",src);
cvShowImage("dst",dst);
cvWaitKey(0);
//cvReleaseImage(&src);
//cvReleaseImage(&dst);
//计算图像均值和方差

CvScalar cs,cs1;
cvAvgSdv(dst,&cs,&cs1);
cout<<"平均值:"<<endl;
cout<<cs.val[0] << endl;
cout <<endl;
cout <<"标准差"<<endl;
cout<<cs1.val[0] << endl;
getchar();


return 0;
}


...全文
331 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这个问题应该是type不对,看到解决办法都是python的,使用numpy去做转化,但是C++怎么搞,还在想办法,唉
bloomerOAO 2019-12-08
  • 打赏
  • 举报
回复
更正一下,是看src中roi的width和height值
bloomerOAO 2019-12-08
  • 打赏
  • 举报
回复
这种情况多是因为cvCopy(src,dst);中src与dst尺寸不相同导致的,所以你调试一下看看src中的width和height是多少,然后把 dst=cvCreateImage(cvGetSize(src),src->depth,src->nChannels);改成dst= cvCreateImage(cvSize(width的值,height的值), 8, 3);就可以了。
caryhn 2015-12-01
  • 打赏
  • 举报
回复
怎么没人帮助啊!请大家抽空帮帮我吧,谢谢

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧