天天看点

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

在用到opencv中出现 

找这个bug找了好久,网上有这样几种说法:

1.check这两个图或者矩阵是不是初始化了

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

3.两者的depth深度是不是一样,即是不是一个是三通道的,一个是单通道的。

或者一个是单通道32位浮点类型,一个是单通道8位整形类型

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

如果你用的是以下代码,

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

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

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

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

或者用以下方式:

iplimage *psubimg =cvgetimage(cvgetsubrect(pimg, cvcreatematheader(100, 100, cv_8uc1),cvrect(0, 0, 100, 100)), cvcreateimageheader(cvsize(100, 100), 8,1));

这个函数的用法,附上个链接

继续阅读