ImL*_*ing 4 opencv image-processing edge-detection opencv4android
我是Android的OpenCV的新手。我目前正在研究文件检测演示应用程序。我到目前为止所做的如下:
原始图像 - > 灰度图像 - > 高斯模糊 - > Canny边缘检测 - > 查找轮廓 - > 绘制轮廓
从下图中可以看到,我能够完美地检测到纸张。
但是它无法检测到某些文件。以下是其中之一
我对此进行了大量研究,发现问题出在Canny边缘检测上,下面是Canny图像:
如您所见,边缘检测未完美链接,并且在某些点上未连接边缘。这就是这样做的原因。
我在以下地方经历过类似的问题:如何在OpenCV中实现的Canny Edge检测算法中选择最佳的参数集? 我已经遵循了解决方案,但是它对我没有用。
我的精明检测代码如下:
double otsu_thresold = Imgproc.threshold(mGray,edged,0,255, Imgproc.THRESH_OTSU);
Imgproc.Canny(mRgba, edged, otsu_thresold*0.5,otsu_thresold);
Run Code Online (Sandbox Code Playgroud)
我不知道我哪里错了!我应该怎么做才能完美地检测文档?
首先,必须更改执行Canny边缘检测的方法。您正在cv2.Canny()
手动设置较低和较高的阈值。您可以自动执行此操作。我使用此链接作为参考。
使用以下代码段:
v = np.median(gray_image)
#---- apply automatic Canny edge detection using the computed median----
lower = int(max(0, (1.0 - sigma) * v))
upper = int(min(255, (1.0 + sigma) * v))
edged = cv2.Canny(gray_image, lower, upper)
cv2.imshow('Edges',edged)
Run Code Online (Sandbox Code Playgroud)
那我在这里做什么?
我正在使用灰度图像的中间值。sigma
选择0.33 的值可设置lower
和upper
阈值。0.33
统计人员通常将值用于数据科学。因此,这里也考虑它。
这就是我得到的:
为了增强边缘信息,我使用内核执行了形态学扩张cv2.MORPH_CROSS
:
现在只需执行通常的cv2.findContours()
操作并绘制最大轮廓即可。
:)
归档时间: |
|
查看次数: |
5590 次 |
最近记录: |