2014-04-23 77 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中的错误包...更多的原因,总是使用命令行;)。

相关问题