python-锐化图像以检测纸上加盖“ X”对象的边缘/线条
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-锐化图像以检测纸上加盖“ X”对象的边缘/线条,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1683字,纯文字阅读大概需要3分钟。
内容图文
![python-锐化图像以检测纸上加盖“ X”对象的边缘/线条](/upload/InfoBanner/zyjiaocheng/682/fab52a4f33e24f85ae6a71abcadff93e.jpg)
我正在使用python& OpenCV的.我的目标是在用树莓派相机拍摄的图像中检测“ X”形碎片.该项目是我们已经预先印制了井字棋盘,并且每次将新棋子放置在棋盘上(带有墨水戳记)时,都必须对棋盘成像.然后输出显示井字棋盘的哪个部分中的棋子类型(如果有).
在这里,我以绿色显示了在图像中检测到的线条:
如您所见,“ X”形的碎片似乎不容易被检测到.在某些邮票上只有一条线被“看见”.
滤镜之后的边缘检测如下:
我检测“ X”形件的方法是检查每个部分中是否有非水平/垂直斜率的线.我的问题是“ X”形邮票不是完美的线条;因此,我的代码几乎无法理解.
我试过应用不清晰的滤镜,使用直方图均衡化以及仅将灰度用于边缘检测.这些都没有检测到任何“ X”形块中超过1条线.
大概我在做什么:
#sharpen image using blur and unsharp method
gaussian_1 = cv2.GaussianBlur(image, (9,9), 10.0)
unsharp_image = cv2.addWeighted(image, 1.5, gaussian_1, -0.5, 0, image)
#apply filter to find stamp pieces, histogram equalization on greyscale
hist_eq = cv2.equalizeHist(unsharp_image)
#edge detection (input,threshold1,threshold2,size_for_sobel_operator)
edges = cv2.Canny(hist_eq,50,150,apertureSize = 3)
#find lines (edges,min_pixels,min_degrees,min_intersections,lineLength,LineGap)
lines = cv2.HoughLinesP(edges,1,np.pi/180,50,minLineLength,maxLineGap)
只有我将其分别应用于开发板的9个部分中,但这并不是很重要.
TLDR:
如何制作图像,使线条“清晰”且清晰?我想知道如何使带有标记的“ X”看起来像几行.
解决方法:
您可以尝试使用Otsu’s robust method for determining the dual threshold value的Canny边缘检测器.
im = cv2.imread('9WJTNaZ.jpg', 0)
th, bw = cv2.threshold(im, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
edges = cv2.Canny(im, th/2, th)
那你可以用
>轮廓的凸度缺陷
要么
>填充轮廓的面积到轮廓边界框的面积
区别十字标记和圆形.
这就是我将Canny应用于您的图像时得到的.
内容总结
以上是互联网集市为您收集整理的python-锐化图像以检测纸上加盖“ X”对象的边缘/线条全部内容,希望文章能够帮你解决python-锐化图像以检测纸上加盖“ X”对象的边缘/线条所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。