gpt4 book ai didi

c# - opencv中的InRange方法与python/cv2和c#/emgu有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-03 22:58:48 27 4
gpt4 key购买 nike

我正在尝试使用 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 版本正常工作的提示或事情将不胜感激!谢谢!

最佳答案

问题似乎是我使用的是旧版本的 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 中不小心点击了错误的包是我的错...更多的理由总是使用命令行 ;)。

关于c# - opencv中的InRange方法与python/cv2和c#/emgu有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23256226/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com