使用OpenCV去除图像中的噪声

42fyovps  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(143)

我有这些图像
enter image description here
enter image description here
我想从这些图像中去除噪声,这样我就可以使用pytesseract将它们转换为文本。噪声只有蓝色,所以我尝试从图像中去除蓝色。仍然没有好的效果。

This is what I did
import cv2
import pytesseract


# Extract the blue channel
blue = img[:, :, 0]

# Apply thresholding to the blue channel
thresh = cv2.threshold(blue, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]

# Perform morphological operations to remove noise
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1,1))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=7)

# Apply blur to smooth out the image
blur = opening#cv2.medianBlur(opening, 1)

cv2.imwrite("/Users/arjunmalik/Desktop/blur.png",blur)
display("/Users/arjunmalik/Desktop/blur.png")

结果是
enter image description here
OCR结果为FL1S4y。

ivqmmu1c

ivqmmu1c1#

正如Sembei所说,您需要使用一个封闭操作符,这是必须的情况下,因为你想关闭对象上的黑点,以提高图像质量。

    • 解决方案:**
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (4,4))
closing = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel, iterations=1)

您可以将代码修改为这样的代码,以实现第二个图像的以下输出。

    • 输出:**

Result
您可能需要为不同的输入图像更改内核的大小。

    • 想法:**

我认为如果你在应用关闭操作符之前先做字符分割会更好,以达到最好的效果。

相关问题