Ass*_*vie 8 opencv image-processing
如何使用标准图像处理过滤器(来自OpenCV)从图像中删除长水平和垂直线?
图像是B&W,因此删除意味着简单地绘制黑色.
插图:

我目前正在使用Python,迭代像素行和列并检测连续像素的范围,删除那些长于N像素的像素.但是,与OpenCV库相比,它确实很慢,如果有一种方法可以实现与OpenCV功能相同的功能,那么可能会快几个数量级.
我想这可以通过使用一行像素(对于水平线)的内核进行卷积来完成,但是我很难确定完成这一操作的确切操作.
如果你的线条是真正的水平/垂直,试试这个
import cv2
import numpy as np
img = cv2.imread('c:/data/test.png')
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
linek = np.zeros((11,11),dtype=np.uint8)
linek[5,...]=1
x=cv2.morphologyEx(gray, cv2.MORPH_OPEN, linek ,iterations=1)
gray-=x
cv2.imshow('gray',gray)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
结果
您可以参考OpenCV Morphological Transformations文档以获取更多详细信息.
| 归档时间: |
|
| 查看次数: |
12558 次 |
| 最近记录: |