2014-04-23 76 views
1

我想將一個小的opencv python腳本轉換爲emgu與C#。opencv中的InRange方法與python/cv2和c#/ emgu有什麼區別?

在Python代碼

COLOR_MIN = np.array([104, 34, 255], np.uint8) 
COLOR_MAX = np.array([124, 34, 255], np.uint8) 
frame_threshed = cv2.inRange(hsv_img, COLOR_MIN, COLOR_MAX) 
cv2.imshow("frame thresh", frame_threshed) 

正確閾值是由cv2.imshow顯示的圖像。

我已經轉換代碼C#如下:

var min = new Hsv(104, 34, 255); 
var max = new Hsv(124, 34, 255); 
var thresh = hsvImg.InRange(min, max); 
CvInvoke.cvShowImage("thresh", thresh); 

這裏只有黑色圖像繪製 - 所以似乎沒有被匹配的門檻。

在這兩種情況下,我都使用相同的.PNG文件作爲輸入。我在osx上編寫了python代碼,而.net代碼在win8虛擬機內部運行 - 這可能與顏色配置文件有關嗎?

任何提示或嘗試讓.NET版本工作的東西將不勝感激!謝謝!

回答

1

這個問題似乎是我正在使用舊版本的emgu,並且正在2.4上面應該工作emgu的文檔。

在版本我用(2.2),以下工作:

var min = new Hsv(103, 33, 254); 
var max = new Hsv(125, 35, 256); 
var thresh = hsvImg.InRange(min, max); 
CvInvoke.cvShowImage("thresh", thresh); 

,而不是由<檢查=和> =它使用<和>。

這是我的錯,無意中點擊NuGet中的錯誤包...更多的原因,總是使用命令行;)。

相關問題