gpt4 book ai didi

opencv - 使用 OpenCV 从边缘图像中去除长水平/垂直线

转载 作者:太空宇宙 更新时间:2023-11-03 20:43:37 29 4
gpt4 key购买 nike

如何使用标准图像处理过滤器(来自 OpenCV)从图像中去除长水平和垂直线?

图像是黑白的,所以删除意味着简单地涂成黑色。

插图:

illustration of required filter

我目前正在用 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)

结果

enter image description here

可以引用OpenCV Morphological Transformations文档以获取更多详细信息。

关于opencv - 使用 OpenCV 从边缘图像中去除长水平/垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19094642/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com