问题标签 [opencv-contour]
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.
python - 使用 OpenCV 检测图像中不同颜色的岛屿
假设我有一张具有单一彩色背景(比如黑色)的图像,其中有很多不同颜色的“岛屿”。想象一个黑色背景,上面散布着红色、黄色和绿色的色块。我想要一个可以在所有这些补丁周围绘制轮廓的程序。我正在将opencv与python一起使用。如果颜色是预定义的,我已经找到了绘制轮廓的程序。如果没有,我该怎么办?这些补丁没有特定的形状。
opencv - OpenCV 轮廓演化
我有一个轮廓,我想“捕捉”到图像的边缘。也就是说,类似于智能剪刀的东西,但对于整个轮廓都是一样的。用户提供了对象轮廓的粗略草图,我想通过将轮廓上的每个点“推”到边缘图像中最近的点来清理它。
OpenCV中是否存在类似的东西?
c++ - findContours 中的分段错误
我在运行时遇到分段错误错误,以便下面的代码找到轮廓。我已经在这个表格上提到了这篇文章,但对我没有多大帮助。我知道 findContours 存在一些问题这是findContours的另一个问题。请检查两个链接并帮助我解决此错误。我不知道为什么我会收到分段错误错误。
错误:
python - 我使用 python 和 opencv3 对直播中最大的图像进行轮廓处理,看起来我的代码出错了,谁能帮帮我
我使用 python 和 opencv3 对直播中最大的图像进行轮廓处理,看起来我的代码出错了,谁能帮帮我
这段代码有两个问题:
python - opencv:在numpy数组上查找轮廓
我正在尝试在二进制图像中找到轮廓,这是一个 numpy 数组
当我尝试运行该代码时,出现此错误
android - 使用 OpenCV4Android,如何从轮廓创建 ROI(感兴趣区域或子垫)?
给定图像Mat
和其中的轮廓(即 a MatOfPoint
),如何创建 ROI(感兴趣区域)/submat?
我可以在 的文档上Mat
看到三种有趣的方法,
Mat submat(int rowStart, int rowEnd, int colStart, int colEnd) 提取一个矩形子矩阵。
Mat submat(Range rowRange, Range colRange) 提取一个矩形子矩阵。
Mat submat(Rect roi) 提取一个矩形子矩阵。
- 有没有办法从轮廓中
找出
rowStart
,rowEnd
和?colStart
colEnd
或者
- 有没有办法从轮廓中获取
rowRange
和获取?colRange
或者
- 我可以
Rect
从轮廓上做一个吗?
opencv - 为什么 OpenCV 中的 drawContour() 会生成这个奇怪的 Mask?
我从阅读这个开始Mat
。
然后我将其转换为灰度并应用于Imgproc.canny()
它,得到以下蒙版。
然后我曾经Imgproc.findContours()
找到轮廓,Imgproc.drawContours()
,并Core.putText()
用数字标记轮廓:
然后我做Rect boundingRect = Imgproc.boundingRect(contours.get(0));
Mat submatrix = new Mat();
submatrix = originalMat.submat(boundingRect);
了以下事情submatrix
:
到现在为止还挺好。问题从此开始:
现在我需要一个面具submatrix
。所以我决定用Imgproc.drawContours()
得到面具:
我得到了以下面具:
我期待的是黑色背景上的填充(白色)钻石形状。
为什么我会得到这个意想不到的结果?
编辑:
当我替换
Mat mask = new Mat(submatrix.rows(), submatrix.cols(), CvType.CV_8UC1);
为Mat mask = Mat.zeros(submatrix.rows(), submatrix.cols(), CvType.CV_8UC1);
时,最后一个带有白色垃圾的蒙版被一个空的黑色蒙版替换,上面没有任何白色。我得到了以下子垫和掩码:我得到了轮廓列表(命名
contours
)中的contours.get(0)
第一个轮廓,并使用这个第一个轮廓来计算Imgproc.boundingRect()
以及contourList.add(contours.get(0));
稍后(其中contourList
只有一个轮廓的列表将在最后一个中使用drawContours()
)。然后我继续更改
contours.get(0)
为contours.get(1)
inImgproc.boundingRect()
以及 incontourList.add();
(就在之前Imgproc.drawContours()
)。这导致了这个子垫和掩码:然后我改回
contours.get(0)
inImgproc.boundingRect()
; 并contourList.add(contours.get(1));
在那里。得到以下子垫和掩码:
现在我完全无法理解这里发生了什么。