码迷,mamicode.com
首页 > 其他好文 > 详细

opencv error :assertion faild (src.depth()==dst.depth()&&src.size==dst.size)

时间:2014-04-29 13:38:22      阅读:647      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   width   io   

在用到opencv中出现 

opencv error :assertion faild (src.depth()==dst.depth()&&src.size==dst.size)
找这个bug找了好久,网上有这样几种说法:

1.check这两个图或者矩阵是不是初始化了
2.如果初始化了,初始化的大小是不是一样,即两者有没有相同的长宽
3.两者的depth深度是不是一样,即是不是一个是三通道的,一个是单通道的。
或者一个是单通道32位浮点类型,一个是单通道8位整形类型

还是没解决的话,那么接着往下看

如果你用的是以下代码,

cvSetImageROI(grayEqualizeImage,cvRect(cr->x,cr->y,IMG_WIDTH,IMG_HEIGHT)); 
cvCopy(grayEqualizeImage,dstImage,0);
cvResetImageROI(grayEqualizeImage);

那么你要检查你 cvSetImageROI 这个函数是否执行成功,因为在cvSetImageROI函数中有一个cvRect结构,

如果你的roi区域因为 IMG_WIDTH,IMG_HEIGHT 而超出图片部分,那么就会造成和上面说的第二种情况冲突

2.如果初始化了,初始化的大小是不是一样,即两者有没有相同的长宽


诶,,,折腾我2小时了,擦!效率太低了!!!


ps:忘了说解决方法了,在cvSetImageROI之前,判断下是否超出图片区域。。。额,等于没说,总之自己加个判断吧

或者用以下方式:

IplImage *pSubImg =cvGetImage(cvGetSubRect(pImg, cvCreateMatHeader(100, 100, CV_8UC1),cvRect(0, 0, 100, 100)), cvCreateImageHeader(cvSize(100, 100), 8,1));


这个函数的用法,附上个链接 http://blog.chinaunix.net/uid-24517893-id-3226126.html



opencv error :assertion faild (src.depth()==dst.depth()&&src.size==dst.size),码迷,mamicode.com

opencv error :assertion faild (src.depth()==dst.depth()&&src.size==dst.size)

标签:style   blog   http   color   width   io   

原文地址:http://blog.csdn.net/eastlhu/article/details/24649175

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!