问题标签 [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.
python - 用openCV(python)计算树突中的突起
我正在尝试使用 Python 和 OpenCV 计算通过荧光显微镜获得的小鼠树突中的树突棘(微小的突起)。
这是我开始的原始图像:
原始图片:
经过一些预处理(下面的代码),我得到了这些轮廓:
带轮廓的原始图片(白色):
我需要做的是识别所有的突起,得到这样的东西:
原始图片,轮廓为白色,预期计数为红色:
在对图像进行预处理(二值化、阈值化和降低噪声)之后,我打算做的是绘制轮廓并尝试在其中找到凸缺陷。问题的出现是因为一些“刺”(这些突起的技术名称)没有被识别,因为它们在同一个凸面缺陷中凸出在一起,低估了结果。在标记凸面缺陷时,有什么方法可以更“精确”吗?
轮廓以白色标记的原始图像。红点标记用我的代码识别的刺。绿点标记我仍然无法识别的刺:
我的 Python 代码:
我知道我的代码还有很多小问题要解决,但我认为最大的问题是这里介绍的问题。
谢谢你的帮助!并有一个好的
opencv - OpenCV中如何计算凸缺陷?
OpenCV函数convexityDefects()
中用于计算轮廓凸度缺陷的算法是什么?
请描述和说明算法的高级操作及其输入和输出。
python - skimage或python中一般物体凹度的度量
我有一个代码,在某些时候我得到一组二维二进制 numpy 数组来表示主要是椭圆和圆的对象(细胞核)
我需要一个关于边缘有多粗糙(锯齿状)的度量。病理学文献中有核轮廓指数:周长/ sqrt(面积)这是有效的,但在我们的例子中,我们特别需要看看周长有多“粗糙”。椭圆和圆形的核轮廓指数是不同的,即使它们都有光滑的边缘。在我们的例子中,一个带有粗糙边缘的圆比一个带有光滑边缘的椭圆更重要。
我考虑过使用此处解释的凸包:我认为在这种情况下,对于许多小凹度(这对我们来说是重要的情况)和一个主要的凹度(这不是那么重要)来说,度量是否相同,就像图片中一样以下。
我也尝试过openCV,但是我发现很难从数学上理解那里实际发生的事情,它看起来非常像skimage凸面外壳,我更愿意坚持使用skimage
python - cv2.convexityDefects 将我踢出没有错误的循环
所以我一直在尝试找出轮廓及其外壳的缺陷。在查看了一些教程后,我遇到了类似的代码,但无论我如何实现它,这条线cv2.convexityDefects
似乎让我跳出了循环,而不是显示视频。该程序在没有缺陷部分的情况下工作,并且我没有在缺陷部分中遇到任何错误,但它似乎只是结束了代码。
如果有人遇到过类似的问题或知道我哪里出错了,那将是一个很大的帮助。
python - 如何使用 OpenCV 检测手指?
我正在尝试使用OpenCV
in检测图像中的手和手指python
。
这是我正在使用的代码:
我得到以下结果:
但是,我无法检测到所有手指(我有 5 个手指,我得到了 4 个用红色小圆圈表示的手指)。我不知道问题出在哪里,或者我应该如何检测所有手指。
我正在寻找接近此的结果:
任何帮助表示赞赏。
python - cv2 中的最佳拟合三角形
TLDR:我希望将三角形拟合到回旋镖形物体上,以检测其“头部”,可能使用 python 的opencv
.
我有一组回旋镖形状的物体(见下图),它们的大小和内角各不相同。此外,有时“回旋镖”(与真正的回旋镖不同)可能不对称,一条腿比另一条腿长,并且腿上可能有缺陷和孔洞。
我可以准确地提取这些形状的轮廓,现在我正在尝试检测回旋镖所面对的方向(定义为“尖”边缘的方向,下图中用棕色圆点标记的方向)。
到目前为止,我的计划是使用opencv
's 凸缺陷法检测内角,并从那里检测方向。然而,我的“回旋镖”并不完美——它们的腿上有时会出现孔洞和缺陷,这会混淆凸缺陷算法。
我的问题是:有没有办法找到适合回旋镖的最适合的三角形(很像最适合的椭圆)?
python - Python 的 cv2 凸缺陷距离太大?
更新:我自己计算的距离与返回的距离之间的比率似乎cv2
正好是 256。这并不奇怪,因为查看他们的代码(此处为第 394 行)显示像素距离乘以 256。我只是不不明白为什么,我猜。
我cv2.convexityDefects
用来寻找某种形状的凸缺陷。我希望计算缺陷的深度(到凸包的距离,正如这里很好解释的那样)。
但是,我得到的距离太大而无法理解。我还尝试使用 cv2.convexityDefects 的起点和终点输出参数(参见下面的代码)手动计算距离,并获得更合理的结果。
计算的距离cv2.convexityDefects
是,
在大约 500 像素宽的图像的上下文中,这完全没有意义。我究竟做错了什么?
更多信息:
这是我为此测试创建的图像(嗯,我的意思是艺术品),
这是代码:
这是上面代码的输出,当应用于测试图像时: