gpt4 book ai didi

python - 摆脱黑色垂直和水平线

转载 作者:行者123 更新时间:2023-12-02 17:07:53 25 4
gpt4 key购买 nike

我想摆脱图像中的黑色垂直和水平线。这是我写到现在的代码

#convert RGB to grayscale
gray_slide = cv.cvtColor(slide_ds, cv.COLOR_BGR2GRAY)

#remove black areas
gray_slide[np.where(gray_slide<=[10])] = [255]

#remove edges
linek = np.zeros((11,11),dtype=np.uint8)
linek[5,...]=1
x=cv.morphologyEx(gray_slide, cv.MORPH_OPEN, linek ,iterations=1)
gray_slide+=x

但它没有做这项工作。
我要这张图

before

转换成这个

after

你能帮我吗?
顺便说一句,这是原始图像
original image

最佳答案

修复 (OpenCV docs) 是一种方法。

>>> img = cv2.imread("blacklines.jpg")
>>> mask = cv2.imread("blacklines_MASK.jpg", 0)
>>> dst = cv2.inpaint(img, mask, 4, cv2.INPAINT_TELEA) # you can fiddle with the parameters
>>> cv2.imwrite("dst.jpg", dst) # save the image

原图:

Original image

为演示目的手工绘制的部分蒙版:

Mask

最后结果:

Final

现在,如果您想以编程方式为多个图像执行此操作,您应该考虑以编程方式创建 mask 。一种方法是根据像素值过滤图像(例如,您对 gray_slide 所做的事情)。

编辑:我自己尝试摆弄一些参数,它接近了,但还没有完全实现......
>>> mask = np.zeros(gray.shape)
>>> mask[np.where(gray<=140)] = [255]
>>> cv2.imwrite('mask.jpg', mask)
True
>>> mask = cv2.imread("mask.jpg", 0)
>>> i = cv2.inpaint(img, mask, 25, cv2.INPAINT_TELEA)
>>> cv2.imwrite("i2.jpg", i)
True

新蒙版(将阈值降低到 120 似乎更好,因为它没有触及内部区域,但我保留了这个版本):

newmask

结果,这里和那里仍然有一些黑色元素:

enter image description here

最后,如果你达到了我上面展示的蒙版阶段,你只需要让这些线条“更宽”。值得一试(也许使用膨胀/侵 eclipse 或其他东西)。

关于python - 摆脱黑色垂直和水平线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50665262/

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