我正在尝试构建一个 OCR 模型来扫描级别问题。之前在这张图片上进行过测试:
但是,代码中似乎有一个错误,或者我的笔记本电脑有问题,它只是自动放大图像,本质上是放大到一个多余的点,在该点上,OCR 无法拾取文本。
这是我使用过的代码:
import cv2
import pytesseract as pyt
import easyocr
#read image
image = cv2.imread("test image 3.jpg")
#pytesseract executable
pyt.pytesseract.tesseract_cmd = "C:\\Users\\kobe4\\OneDrive\\Desktop\\AI\\python stuff\\tesseract\\tesseract.exe"
#preprocessing
#1.make the image gray
im_gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
im_rt = cv2.rotate(im_gray,cv2.ROTATE_90_COUNTERCLOCKWISE)
cv2.imshow('first image',im_rt)
cv2.waitKey(0)
即使仅对从 imread 函数读取的默认图像使用 imshow 函数,仍然会导致意外缩放。我不知道是什么导致了这个问题,希望有人能指导我解决这个问题
我尝试通过 opencv ResizeWindow 函数调整窗口大小,我希望整个图像压缩到我为该函数设置的大小,但它只是裁剪掉已放大图像的一部分并使其变小。当我尝试缩小图像尺寸时发生了同样的事情
这是我尝试两次单独尝试独立调整窗口和图像大小后的图像(+对其进行灰度化)
我在这里假设您的原始图像比您的屏幕分辨率大得多。默认情况下,
imshow
使用 WINDOW_AUTOSIZE
标志并尝试以其原始大小显示图像,这受到显示分辨率的限制,并导致图像看起来被裁剪。为了解决这个问题,您可以先创建带有 WINDOW_NORMAL
标志的窗口,然后再调用 imshow
。
至于调整窗口大小,这也不适用于默认标志。尝试下面的代码,看看是否可以解决您的问题。
import cv2
image = cv2.imread(r"test image 3.jpg")
im_gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.namedWindow('first_image', cv2.WINDOW_NORMAL)
# Note resizeWindow won't work with WINDOW_AUTOSIZE
cv2.resizeWindow('first_image', image.shape[1]//4, image.shape[0]//4)
cv2.imshow('first_image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()