问题标签 [convexity-defects]

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 投票
2 回答
553 浏览

visual-c++ - 有凸缺陷的例外

我正在尝试从以下代码中获取凸面缺陷,但不断收到未处理的异常。我究竟做错了什么?

而 HullPoints 的 typevector<Point> 异常如下

但是使用 vector<Point> defects;orvector<Vec4i> defects 我得到以下异常

0 投票
2 回答
2566 浏览

java - OpenCV Java 凸性缺陷(计算机视觉)

我在将凸面缺陷放在框架上时遇到问题。为了计算它们,我修改了 c++ 源代码,这就是我归档的内容:

然而,Imgproc.drawContours(...) 方法要求作为参数传递给它的convexityDefects 将是ArrayList。我不知道如何进行转换。我对凸包也有类似的问题,但我发现了一个解决方法:

凸面缺陷的类似解决方案不起作用。有谁知道我该如何解决这个问题?

如何从 MatOfInt4() 转换为 ArrayList() 才能绘制凸面缺陷?

0 投票
0 回答
979 浏览

c++ - 如何在 C++ OpenCV 中计算凸面缺陷中的手指数

我用 OpenCV 用 C++ 创建了一个程序,它现在能够识别皮肤并成功地创建凸包和凸面缺陷。现在我想计算手指的数量,还有什么办法可以改进这段代码?
我在这里做的是找到船体点的大小,但这并没有给我准确的结果:(

我无法找到一种方法来计算手指的数量,请您帮我计算手指的数量。

这是我的代码

0 投票
0 回答
334 浏览

java - 为什么我在 Android 中的凸性缺陷 OpenCV 会出错?

我也是 Android 开发的初学者和 OpenCV 的新手。我有一个关于安卓手势识别的项目。我想对它做凸性缺陷。在我做凸面缺陷之前,我应该先找到轮廓和凸包。我已经做过了。现在,我正在做凸面缺陷来获得手和手指的缺陷。但是有一点不对劲。当我在我的 Android 中构建具有凸性缺陷的代码时,不幸的是它停止了。我不知道我的凸性缺陷函数是否错误,或者我将缺陷值 (MatOfInt4) 获取到 Point 的方式是错误的。

这是我的代码:

0 投票
0 回答
4417 浏览

c++ - OpenCV:处理轮廓向量索引

使用函数 convexityDefects 从二进制图像中获取 blob 并创建一个向量,其中包含我手周围的所有点。这个向量总是从我的斑点上最高 Y 位置的点开始,这干扰了我在每个手指上运行 K-Curvature 以确定准确手指位置的能力。

我考虑过重新洗牌向量,以便向量的开头远离我手上手指的位置。问题是这很难实现,因为我没有有效的方法来选择手头上的一个点来开始对点进行重新排序。你有什么建议可以提供简单的方法来解决这个问题吗?我的目标是在这个数组开始的约 30 点内没有指尖。

0 投票
0 回答
37 浏览

c++ - 凸性缺陷错误:CV_32>2、pMat>3 和分段错误

这是我用于凸面缺陷的代码,并且在网上搜索了很多它的解决方案,不幸的是我看到了这个问题,但从来没有发布过解决方案,如果有人曾经使用过凸面缺陷,请帮助......

0 投票
4 回答
3532 浏览

opencv - 如何裁剪掉凸面缺陷?

我正在尝试从轮廓中检测并精确定位图像中的某些对象。我得到的轮廓经常包含一些噪音(可能形成背景,我不知道)。对象应类似于矩形或正方形,例如:

在此处输入图像描述

我通过形状匹配cv::matchShapes

噪音看起来像:

在此处输入图像描述在此处输入图像描述例如。

我的想法是找到凸面缺陷,如果它们变得太强,以某种方式剪掉导致凹面的部分。检测缺陷是可以的,通常每个“不需要的结构”都会有两个缺陷,但我被困在如何决定应该从轮廓中删除哪些点以及在哪里删除点。

以下是一些轮廓、它们的掩码(因此您可以轻松提取轮廓)和凸包,包括阈值凸度缺陷:

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

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

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

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

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

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

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

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

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

我可以只穿过轮廓并在本地决定轮廓是否执行“左转”(如果顺时针行走),如果是这样,删除轮廓点直到下一次左转?也许从凸面缺陷开始?

我正在寻找算法或代码,编程语言应该不重要,算法更重要。

0 投票
1 回答
2201 浏览

opencv - Opencv将轮廓分为两部分

我在 Opencv 中有一个带有凸面缺陷的轮廓(红色的那个),我想将该轮廓分成两部分,水平穿过该点,有没有办法做到这一点,所以我只是将轮廓标记为黄色? 描述问题的图片

在此处输入图像描述

0 投票
2 回答
371 浏览

c++ - OpenCV的最后一个凸性缺陷不正确

我正在尝试编写代码来跟踪手。我正在使用凸面缺陷函数来查找手指,但由于某种原因,最后一个缺陷似乎总是存在问题。

这是我正在谈论的图片(对不起,我是论坛的新手,所以不能发布图片)

青色线是轮廓,黄色线是船体点,红色线是缺陷点。如您所见,最后一个缺陷点从轮廓的错误一侧检测到缺陷。

这是我的代码:

我已经通过实验证实,这总是缺陷向量中的最后一个缺陷也会发生。这是opencv中的错误还是我做错了什么?

0 投票
0 回答
190 浏览

python - 如何使 convexHull 在更小的间隔内工作?

我试图找到边缘缺陷。我正在使用预制函数convexHull,但它跳过了我正在寻找的缺陷。像这样:

在此处输入图像描述

我希望convexHull 函数以更小的间隔起作用,这样它就不会跳过轮廓上可能存在的缺陷。像这样:

在此处输入图像描述

简化,这就是我的代码的样子:

我的主要问题是,如果我正在检查的零件的几何形状是凸的(如上图所示),我的代码会标记一个不正确的错误,并且还会跳过可能存在边缘缺陷的轮廓。

我的最终目标是检测所有可能的边缘缺陷。如果您知道比 convexHull 方法更智能的解决方案,请随时告诉我!:)

这是原图

在此处输入图像描述