OpenCV cvFindContour()方法獲取8連接的鄰居規則之後的連接組件。有沒有辦法將它變成4連接的鄰居規則 - 檢查連通性時不會考慮拐角單元。將CvFindContours()從8連接更改爲4連接的鄰居
顯然Mathematica用一個簡單的CornerNeighbors->False
shown here on SO來做到這一點。 在OpenCV中這樣做的任何方式?即使我們真的要改變cv * .h文件中的函數定義(這相當有毛病)......任何指針?
OpenCV cvFindContour()方法獲取8連接的鄰居規則之後的連接組件。有沒有辦法將它變成4連接的鄰居規則 - 檢查連通性時不會考慮拐角單元。將CvFindContours()從8連接更改爲4連接的鄰居
顯然Mathematica用一個簡單的CornerNeighbors->False
shown here on SO來做到這一點。 在OpenCV中這樣做的任何方式?即使我們真的要改變cv * .h文件中的函數定義(這相當有毛病)......任何指針?
恐怕這是不可能的,你可以考慮建議一個代碼更改爲opencv,添加一個標誌,允許這樣做。目前,在該文件中:
有一個名爲icvCodeDeltas數組,它決定了所有的鄰居。你可以檢查它在哪裏,並添加一個
static const CvPoint icvCodeDeltas4[4] = { {1, 0}, {0, -1}, {-1, 0}, {0, 1} };
這是用於例如CV_NEIGHBOURS_CROSS指定。然後請opencv社區添加它,這是開源工作的方式。也許一個快速的,骯髒的,你,應該待羞愧的解決將是這樣的:
virtual CvPoint icvCodeDeltas[8];
icvCodeDeltas = { {1, 0}, {0, -1}, {-1, 0}, {0, 1}, {1, 0}, {0, -1}, {-1, 0}, {0, 1} };
但我沒有測試這一點,我不知道這是否會避免「靜態」和「常量'所以要小心;)