OpenCV python 意外的图像放大

问题描述 投票:0回答:1

我正在尝试构建一个 OCR 模型来扫描级别问题。之前在这张图片上进行过测试:

原图

但是,代码中似乎有一个错误,或者我的笔记本电脑有问题,它只是自动放大图像,本质上是放大到一个多余的点,在该点上,OCR 无法拾取文本。

使用Imread功能后的图像

这是我使用过的代码:

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 函数调整窗口大小,我希望整个图像压缩到我为该函数设置的大小,但它只是裁剪掉已放大图像的一部分并使其变小。当我尝试缩小图像尺寸时发生了同样的事情

灰度化和调整大小后的图像

这是我尝试两次单独尝试独立调整窗口和图像大小后的图像(+对其进行灰度化)

python image opencv
1个回答
0
投票

我在这里假设您的原始图像比您的屏幕分辨率大得多。默认情况下,

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()
© www.soinside.com 2019 - 2024. All rights reserved.