首页 > 代码库 > opencv error :assertion faild (src.depth()==dst.depth()&&src.size==dst.size)
opencv error :assertion faild (src.depth()==dst.depth()&&src.size==dst.size)
在用到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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。