FindContours 函式崩潰問題探索

2021-08-03 16:35:44 字數 886 閱讀 9681

首先介紹下這個函式: 演算法

對於第一種錯誤:

屬於引數型別不匹配,輸入影象image必須為乙個2值單通道影象。 第二個引數:contours引數為檢測的輪廓數,vector>contoursm,網上說必須為cv::vector和cv::point ,但其實opencv中vector指向的就是std::中的vector,而opencv3.0後不會有cv::vector,而對於cv::point,我在試驗中發現std空間內無point已經預設為cv下了,所以網上對於網上提出的這個錯誤做個總結吧。

對於第二種錯誤:

及一些其他錯誤則是由於配置或者記憶體呼叫的問題。

配置問題由以下解決:

1,在配置屬性->常規->mfc的使用中,將在靜態庫中使用mfc改為在共享dll中使用mfc。

2,在c/c++->**生成->執行庫->多執行緒除錯(/mtd)改為多執行緒dll除錯(/mdd)。區別講解:

而對於記憶體問題是由於vector在初始沒有分配記憶體時,當呼叫它的dll加入東西時自動為其分配記憶體,其實就是在dll中申請了一塊記憶體,在exe中刪除這塊記憶體。但是這兩個pe(exe、dll都是pe檔案)在初始化時分配的堆疊控制代碼是不一樣的,所以就出錯了。

解決方法就是一開始初始為vector分配記憶體。vector< vector>contours(1000);以解決。

3.asserte(_block_type_is_valid(phead->nblockuse))問題。

這個問題是由於delete掉了不是由new分配的記憶體空間,在未對vector初始化空間呼叫findcontours函式後,進行vector的erase操作導致。

findContours函式引數說明及相關函式

findcontours函式,這個函式的原型為 void findcontours inputoutputarray image,outputarrayofarrays contours,outputarray hierar chy,int mode,int method,point offset ...

findContours函式引數說明及相關函式

findcontours函式,這個函式的原型為 void findcontours inputoutputarray image,outputarrayofarrays contours,outputarray hierar chy,int mode,int method,point offset ...

opencv中的findContours的使用

1.findcontours對0包圍1的情況,會找出1來。例如 0,0,0 0,1,0 0,0,0 找出來的contour是1,1.2.findcontours對1包圍0的情況,會找出0周圍的點來。1,1,1 1,0,1 1,1,1 找出來的contour是1,0 2,1 1,2 0,1 3.fin...