问题标签 [opencv-drawcontour]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
503 浏览

c++ - 如何找到检测到的图像的绘制轮廓点?

我想在像背景减法,findcontour,drawcontour这样的操作之后找到在对象上绘制的轮廓点。我的物体在移动,所以我的轮廓也不合适。我想找到在对象上绘制的轮廓上的最大和最小点。谁能告诉我怎么找?我的对象是移动的汽车,相机视图位于顶部。

0 投票
1 回答
1152 浏览

python - 创建轮廓列表

我有 (x,y) 点用于轮廓线 ( cnt)。通过将数据结构与findContours返回值 ( contoure) 的数据结构进行比较,我创建了看起来几乎相同的列表。 cnt是 3D 数组contoure的列表,并且是 3D 数组的列表。

我得到以下结果:

我不明白为什么我得到“元组索引超出范围” np.size(contoure,1)(注意这contoure[i]是 3D 数组!)但没有错误np.size(cnt,1)以及为什么np.size(cnt) != np.size(contoure)

我认为 drawContourscnt由于这种差异而无法使用,但我不知道为什么会发生这种情况。

编辑:轮廓是由 findContours() 调用创建的。我不确切知道cnt是如何创建的,因为我的朋友编写了这部分代码,我只得到以下形式的结果:all_cnt:

其中 x1,y1 是描述第一个轮廓的 n 对。比我使用以下代码:

0 投票
1 回答
620 浏览

java - OpenCV drawContours 问题

我将 OpenCV (Java) 与 Eclipse Luna 一起使用。我遇到了 drawContours 方法的问题。该代码没有错误,但是当我运行它时,图像会加载,但没有可见的计数。
图片类:

}

LoadImage 类(不是很重要,只是做一个框架来显示图像):

输入图像

这可能是一个简单的修复,但我找不到任何关于它的东西。

0 投票
1 回答
3447 浏览

opencv - 当我只绘制更大的轮廓对象时,Python Opencv drawContours 失败

我正在尝试绘制最大物体的轮廓。

首先,我将展示一个绘制所有轮廓的图像:

所有轮廓对象

为了找到最大的对象,我使用了这段代码:

结果是下一个: 最大物体的轮廓

为什么轮廓没有连接?

提前致谢。

0 投票
1 回答
8189 浏览

c++ - OpenCV 3.0.0 MSER 二进制掩码

我正在尝试在 OpenCV 3.0.0 beta 中使用 MSER 算法从图像中提取文本区域。最后,我需要一个带有检测到的 MSER 区域的二进制掩码,但该算法仅提供轮廓。我试图绘制这些轮廓,但没有得到预期的结果。

这是我使用的代码:

这是结果: OPENCV MSER

问题是非凸区域被穿过实际 MSER 区域的线填充。我只想要从 MATLAB 获得的区域中的像素列表detectMSERFeaturesMATLAB MSER

任何想法如何从轮廓中获取填充区域(或以其他方式获取 MSER 掩码)?

0 投票
1 回答
506 浏览

opencv - drawContours 奇怪的行为?

我从二进制图像中过滤小斑点(面积小于阈值的轮廓)。掩码是二值图像。

如果我评论行

然后当我用 0 个小斑点填充后保存蒙版时,我会得到奇怪的结果。

也不明白为什么取消注释行时它会起作用,因为之后

掩码逻辑上应与输入掩码相同(图像周围的 1 个像素边界除外)

我得到了什么 在此处输入图像描述 在此处输入图像描述

我想要的是

在此处输入图像描述 在此处输入图像描述

所以我不明白当我填充坏轮廓时,drawContours 是否会破坏初始蒙版?

0 投票
1 回答
4020 浏览

python - Getting error "FindContours support only 8uC1 and 32sC1 images in function cvStartFindContours"

I am trying to preform image processing techniques such as histogram backprojection and morphological filtering, but whenever I try to find a contour on the processed image, it keeps giving me an error:

I tried to find multiple ways to convert my processed image into either a 8uC1 or 32sC1, but have failed. Can anyone tell me how do I convert the image into a type 8uC1 or type 32sC1 so that I can find contours within the image?

Code:

0 投票
2 回答
8570 浏览

python - Python OpenCV仅在外边框上绘制轮廓

使用 OpenCV 绘制轮廓时drawContours,边框以轮廓为中心绘制,我只想在轮廓外侧绘制边框。

这张图片(取自 SketchUp 文档)解释得最好: 在此处输入图像描述

drawContours像在第一个圆圈中一样绘制轮廓(轮廓在绘制边框的中间)。我只需要在轮廓外侧设置边框,就像在最后一个圆圈中一样。

任何人都知道如何实现这种行为?

谢谢。

0 投票
2 回答
3661 浏览

android - 尝试使用opencv从图像中检测蓝色,并得到意想不到的结果

我是 OpenCV4Android 的新手。这是我编写的一些代码,用于检测图像中的蓝色斑点。在以下图片中,图片 1 在我的笔记本电脑中。我运行应用程序,OpenCV 相机捕获的帧是图像 2。您可以查看代码以查看其余图像是什么。(正如您在代码中看到的,所有图像都保存在 SD 卡中。)

我有以下问题:

  • 为什么在相机捕获的 rgba 帧中,浅蓝色斑点的颜色变成了浅黄色(如图 2 所示)。

  • boundingRect我围绕最大的蓝色 blob创建了一个,但随后ROI通过rgbaFrame.submat(detectedBlobRoi). 但你可以在最后一张图片中看到,它看起来就像几个灰色像素。我期待蓝色球体与图像的其余部分分开。

我错过了什么或做错了什么?

代码:

  1. 电脑中的原始图像,这是通过将手机的摄像头放在笔记本电脑屏幕前拍摄的。

在此处输入图像描述

  1. rgbaFrame.jpg

在此处输入图像描述

  1. hsvImage.jpg

在此处输入图像描述

  1. 扩张图像.jpg

在此处输入图像描述

  1. 蒙面垫.jpg

在此处输入图像描述

  1. 检测到的BlobRgba.jpg

在此处输入图像描述


编辑:

我刚刚使用Core.inRange(hsvImage, new Scalar(0,50,40), new Scalar(10,255,255), maskedImage);//3, 217, 225 --- 6, 85.09, 88.24 ...... 3 219 255了,我通过给它一个自定义的红色 HSV 值来捕获网站 colorizer.org 的截图,即对于 OpenCV 红色Scalar(3, 217, 255)(它落在给定inRange函数中设置的范围内,我将通道值缩放到colorizer.org 的比例,即 H=0-360,S=0-100,V=0-100,通过将 H 值乘以 2,并将 S 和 V 值除以 255 并乘以 100。这给出了我6, 85.09, 88.24在网站上设置,并截取了屏幕截图(下图中的第一个)。

  1. 原始截图,我捕捉到了这一帧。

在此处输入图像描述

  1. rgbaFrame.jpg

在此处输入图像描述

  1. hsvImage.jpg

在此处输入图像描述

  1. 蒙面图像.jpg

在此处输入图像描述

  1. 膨胀垫.jpg

在此处输入图像描述

  1. 检测到的BlobRgba.jpg

在此处输入图像描述


重要的:

当我触摸 rgbaFrame 内部时(即在onTouch方法内部调用它),给定的方法实际上是在我的测试应用程序中调用的。我还使用以下代码打印到我触摸过的彩色 blobTextViewHueSaturation和值。当我运行这个应用程序时,我触摸了红色的 blob,并得到了以下值:.ValueHue:3, Saturation:219, Value:255

public boolean onTouch(View v, MotionEvent motionEvent) {detectColoredBlob(); int cols = rgbaFrame.cols(); int 行 = rgbaFrame.rows();

}

0 投票
1 回答
272 浏览

android - 字段/常量 CV_FILLED 属于哪个 OpenCV4Android 类?

CV_FILLED该字段属于哪个 OpenCV4Android 类?我无法从我的谷歌搜索中找到。

它用作该方法的第 5 个参数的值Imgproc.drawContours()。从文档中:

厚度- 绘制轮廓线的粗细。如果它是负数(例如,thickness=CV_FILLED),则绘制轮廓内部。

我需要使用它,但在 Android/Java 中,我不能像那样使用它,我需要使用它所属的类的名称和点运算符,比如theClass.CV_FILLED. 如果我尝试使用 just CV_FILLED,编译器会抱怨,“CV_FILLED 无法解析为变量”。