我目前正在嘗試使用OpenCV 2.3和C++來檢測一隻手(戴着綠色手套)並區分不同的手勢。尋找凸缺陷?在OpenCV 2.3中,C++與MS Visual Studio2010
在此刻,我的下一步是獲取手的特定特徵(凸起缺陷)。
到目前爲止,我已經在我的過程中使用這些功能:
mixChannels(); //to subtract non-green channels from green.
threshold(); //to convert to binary
erode(); dialate(); //to get rid of any excess noise
findContours(); //to find contours of course
這些都出色的工作,我已經通過使用drawContours()
能夠輸出findContours()
。
下一步,這是我在哪裏,正在使用convexHull()
,它也在OpenCV 2.3中工作。但是,我還沒有找到convexHull()
的矢量結果的外觀(它們包含哪些功能)。
但是這是棘手的部分。
我發現OpenCV的舊版本(使用c使用IplImage
),有一個整潔的小函數,稱爲cvConvexityDefects()
,它可以給凸包上的一組缺陷。這些都是我需要的,但似乎沒有OpenCV 2.3的這種功能,我也沒有看到如何使用舊的語法來獲得這些結果。
這是link to Open CV documentation on cvConvextDefects
。
我要求的,是一個類似的OpenCV 2.3函數,或者是一個用於查找這些缺陷的代碼或算法的自寫代碼。或者使用舊的2.1語法作爲向量結果或類似的方法。
(我知道我可以使用其他功能,矩形邊框,並裝圈子,但我敢肯定,凸狀缺陷產生的最區分功能。)
解決方案 - 我結束了使用C++包裝from this post 唯一不適用於此包裝的東西似乎是缺陷向量的韭菜,應該很容易解決。
下一步是從這些缺陷中獲取一些有用的數據。 (乍看之下,數據看起來似乎是凸形或輪廓上的單點或者這些的數量,我起初預計會有一組兩點,或者一個點和一個長度,它似乎不是。如果我用這個打磚牆,我會再發一篇文章)
OpenCV的2.3.1仍然有此方法,以便尋找它時,你一定做錯了什麼。你可以在文檔中看到自己:http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=defects# – Adrian
我已經搜索了很多。我確實認爲_vasile_提供的答案將解決我的問題。 (我已經在OpenCV文檔的森林中散步了很長一段時間,但感謝提出這個問題) – Sonaten