如何解决Python:如何使用 openCV 修复图像中的杂乱区域?
我有一个使用 OpenCV 查找图像轮廓的代码。但是当我的代码基于凌乱的图像时,它不起作用。
我的形象:
我的图像是一张扫描纸,有很多噪点和杂乱的区域。所以我应用了高斯模糊、OTSU-阈值和变形接近来修复。
我的代码:
# Apply GaussianBlur + OTSU-Thresholding
grayscale_image = cv.cvtColor(source_image,cv.COLOR_BGR2GRAY)
grayscale_image = cv.GaussianBlur(grayscale_image,(5,5),0)
ret,grayscale_image = cv.threshold(grayscale_image,200,255,cv.THRESH_BINARY + cv.THRESH_OTSU)
cv.imshow("grayscale_image",grayscale_image)
# Apply Morph Close
kernel = cv.getStructuringElement(cv.MORPH_RECT,5))
morph_closed_image = cv.morphologyEx(grayscale_image,cv.MORPH_CLOSE,kernel)
cv.imshow("morph_closed_image",morph_closed_image)
尽管如此,我的代码奇怪地创建了轮廓。图像的杂乱区域被识别为轮廓。
我的轮廓图像:
而且,这是我的轮廓代码:
contours,hierarchy = cv.findContours(morph_closed_image,cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE)
contour_sizes = [(cv.contourArea(contour),contour) for contour in contours]
biggest_contour = max(contour_sizes,key=lambda x: x[0])[1]
contour_image = source_image.copy()
cv.drawContours(contour_image,[biggest_contour],(0,255),2)
cv.imshow('contour_image',contour_image)
因此,我想修复图像中的噪点和杂乱。如果我修复了图像中的噪点和杂乱区域,则应用的轮廓效果很好。
如何使用 openCV 修复图像中的杂乱区域?
我的目标:
请给我一些建议。
解决方法
M Z 说得好。
你只需要侵蚀然后扩张它。它实际上可以使用相同的内核和迭代。
这样做的主要目的是:
- 随着侵蚀,小白色形状被杀死。
- 通过扩张,恢复感兴趣区域中被侵蚀的白色形状(大形状)。
所以,你应该侵蚀直到所有的小形状都被杀死,然后尝试通过扩张恢复大形状的原始大小。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。