我正在尝试使用C#将一个小的opencv python脚本转换为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 VM中运行 - 这可能与颜色配置文件有关吗?
任何尝试让.NET版本正常工作的提示或事情都将非常感谢!!谢谢!
答案 0 :(得分:1)
问题似乎是我正在使用较旧版本的emgu,并且正在使用emgu的2.4文档,其中上述应该有效。
在我使用的版本(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中意外点击错误的包是我的错...更多的理由总是使用命令行;)。