You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV Python读取图像意外放大问题求助

问题:OpenCV imshow显示图像放大导致OCR识别受影响

我正在构建一个用于扫描A-level试题的OCR模型,用cv2.imread读取图像后,通过cv2.imshow显示时图像意外放大,聚焦到文字不清晰的区域,影响OCR识别。尝试用ResizeWindow函数调整窗口或直接缩小图像,结果仅裁剪已放大图像的局部并缩小,无法完整压缩图像。

原代码

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)

解决方法

1. 先按比例缩放图像再显示

直接显示大尺寸图像时,OpenCV会自动放大窗口适配图像导致局部放大。正确做法是先按比例缩小图像,再显示:

  • 设定缩放比例(如缩小到原尺寸的50%)
  • 计算新的宽高
  • 使用cv2.resize生成缩小后的图像,再显示

2. 强制窗口自适应(保留原图像尺寸)

如果不想修改图像本身,只想让窗口完整显示图像,可在imshow前设置窗口属性为cv2.WINDOW_NORMAL,这样窗口支持手动调整大小,默认完整展示图像。

修改后的完整代码

import cv2
import pytesseract as pyt
import easyocr 

# 读取图像
image = cv2.imread("test image 3.jpg")

# 设置pytesseract路径
pyt.pytesseract.tesseract_cmd = r"C:\Users\kobe4\OneDrive\Desktop\AI\python stuff\tesseract\tesseract.exe"

# 预处理
im_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
im_rt = cv2.rotate(im_gray, cv2.ROTATE_90_COUNTERCLOCKWISE)

# 方法1:缩放图像后显示
scale_percent = 50  # 缩放比例(50%)
width = int(im_rt.shape[1] * scale_percent / 100)
height = int(im_rt.shape[0] * scale_percent / 100)
resized_img = cv2.resize(im_rt, (width, height), interpolation=cv2.INTER_AREA)
cv2.imshow('Resized Image', resized_img)

# 方法2:使用可调整窗口显示原尺寸图像(解开注释即可使用)
# cv2.namedWindow('Original Size Image', cv2.WINDOW_NORMAL)
# cv2.imshow('Original Size Image', im_rt)

cv2.waitKey(0)
cv2.destroyAllWindows()

内容的提问来源于stack exchange,提问作者user27415503

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:42:06