天天看點

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));

這個函數的用法,附上個連結

繼續閱讀