- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 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/
我正在使用Opencv 3.0来仅获取图像中的彩色对象。因此,我创建并使用蒙版。 #include using namespace cv; using namespace std; int main
我似乎无法将结构上的成员值插入到 inRange 函数中。程序可以编译,但阈值并未按预期工作。如果我插入一个不是来自结构的值,它会很好地工作。 struct objects{ int iLowH
我在 Android 上使用 OpenCV 实时查找特定颜色的圆圈。我的第一步是只保留与我正在寻找的定义颜色相对应的像素(在本例中为红色或绿色)。 Example Image. 为此,我使用方法inR
如果这里遇到一个很奇怪的问题。我正在使用 Visual Studio 10 和 OpenCV 进行开发在下面的代码段中,我正在创建一个 1 channel 垫并写入两个不同的垫。第一个窗口“test1
我正在使用 java opencv,这是我正在执行的行。 Imgproc.cvtColor(originalImage, hsvImage, Imgproc.COLOR_BGR2HSV); Core.
我尝试运行以下代码: #include #include using namespace cv; int main() { VideoCapture cap; cap.open(0);
关于以下 cv2.inRange(...) 调用: mask = cv2.inRange(quantized_img, color, color) 'quantized_img' 和 'color'
我正在尝试将 cv::InRange() 与 HSV 图像一起使用。因为色调值是循环的,所以我需要处理最小/最大值,其中最小色调可能大于最大色调值。到目前为止,我使用以下代码来计算范围掩码: cv::
我正在使用 OpenCV 和 Eclipse。 我需要检测人体皮肤,所以我将图像转换为 HSV,然后使用 inRange 函数获取带有白色皮肤图像的 Mat。 问题是现在,我需要检测哪些组件是白色来修
img = cv2.imread('/home/user/Documents/workspace/ImageProcessing/img.JPG'); image = cv2.cvtColor(img
我可以使用下面的代码在框架内找到任何蓝色的东西: How To Detect Red Color In OpenCV Python? 但是我想修改代码以在我拥有的视频中查找非常特定的颜色。我从视频文件
Core.inRange(frame, new Scalar(minA,minB,minC), new Scalar(maxA,maxB,maxC), dst); 我不明白我应该向 Scalar 输入
我有我的图像mRgba,当我这样做时: Core.inRange(mRgba, B1, B2, mRgba); 我得到了预期的结果:我所有的 RGBA 图像都在 B1 和 B2 之间设置了阈值。 现在
我在转换图像以进行颜色识别时遇到了一些问题。 函数如下所示: void PaintHSVWindow(cv::Mat img){ cv::Mat HSV, threshold; cvtColor(im
我一直在尝试将 inRange 函数应用于我的图像。在没有 InRange 的情况下,到 HSV 的转换工作正常,但是当我尝试应用它时,我可以获得我想要的颜色(在本例中为紫色)。我收到错误。 我正在使
我熟悉 OpenCV 的 inRange 函数来创建掩码。假设我想获得某种颜色“周围”的颜色范围内的像素蒙版,我可以这样做: color = np.array([240, 60, 70]) max_d
我正在尝试检测对象中的白色形状,并且可以成功检测 1 个视频。 // Create and display a new matrix for triangles triangles = src.clo
我无法摆脱 OpenCV 中的这个错误: OpenCV Error: Sizes of input arguments do not match (The operation is neither '
如何更改此方法以充当 NotInRange?它应该只返回谓词与提供的 values 不匹配的项。 更新 方法名称, InRange,有点误导,应该是 WhereInRange (或类似名称) ,因为它
我正在用 OpenCV 编写一个 C++ 程序来检测月球陨石坑,它似乎只能准确检测到一小部分陨石坑。我对这种方法的策略是首先将图像转换为 HSV,然后使用 inRange() 捕捉值范围内的颜色以产生
我是一名优秀的程序员,十分优秀!