【问题标题】:What is the difference between the InRange method in opencv with python/cv2 and c#/emgu?opencv 中的 InRange 方法与 python/cv2 和 c#/emgu 有什么区别?
【发布时间】:2014-06-08 23:46:00
【问题描述】:

我正在尝试使用 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 虚拟机中运行 - 这可能与颜色配置文件有关吗?

任何尝试使 .NET 版本正常工作的提示或事情将不胜感激!谢谢!

【问题讨论】:

    标签: c# python opencv emgucv


    【解决方案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 中不小心点击了错误的包是我的错...更多理由总是使用命令行 ;)。

    【讨论】:

      猜你喜欢
      • 2017-08-31
      • 2021-04-07
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 2021-12-20
      • 2021-02-18
      相关资源
      最近更新 更多