gpt4 book ai didi

python - 使用 Opencv 从 python 中的图片中删除小边缘

转载 作者:太空宇宙 更新时间:2023-11-03 21:32:08 28 4
gpt4 key购买 nike

我是 OpenCv 的新手。我正在尝试通过 Python 中的 OpenCV 创建一张黑白漫画人物图片。我有点成功,在创作黑白卡通人物照片方面。但问题是,我想从输出图像中去除黑色小点。请帮我。我想删除图片中指出的这些黑点。这是我的代码。

    image = cv2.imread('input1.jpg')
img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
img_gray = cv2.medianBlur(img_gray, 5)
edges = cv2.Laplacian(img_gray, cv2.CV_8U, ksize=5)
ret,mask =cv2.threshold(edges,100,255,cv2.THRESH_BINARY_INV)
image2 = cv2.bitwise_and(image, image, mask=mask)
cv2.imshow("Mask", mask)

enter image description here

最佳答案

您需要使用 OpenCV 对图像应用过滤器以去除黑点(称为“噪声”)。您可以对图像应用许多 2D 卷积。

Median Filter

此过滤器将找到每个像素及其周围像素的中值。它可以从中心收集尽可能多的像素,以放大效果。

Gaussian Blur

您可以应用另一种类型的模糊处理来消除噪点,也许不能完全消除,但肯定会降低其效果。如果您正在处理黑白图像(看起来确实如此),那么这实际上可能会完全消除噪点。

编辑

在应用阈值后再次尝试应用中值滤波器,由于值是二进制的,因此应该比以前更好地去除噪声:

image = cv2.imread('input1.jpg')
img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
img_gray = cv2.medianBlur(img_gray, 5)
edges = cv2.Laplacian(img_gray, cv2.CV_8U, ksize=5)
ret,mask =cv2.threshold(edges,100,255,cv2.THRESH_BINARY_INV)
image2 = cv2.bitwise_and(image, image, mask=mask)
image2 = cv2.medianBlur(image2, 3) # this
cv2.imshow("Mask", mask)

希望这对您有所帮助!

关于python - 使用 Opencv 从 python 中的图片中删除小边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50395617/

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