[英]How can I cv2.imshow large size images?
我正在尝试cv2.imshow
我的图像以进行透视变换。
但是,我的图像很大,所以我看不到全图:
我该如何解决这个问题?
下面是我的代码:
import cv2
import os
import numpy as np
image_path = "1.jpg"
filename, ext = os.path.splitext(os.path.basename(img_path))
ori_img = cv2.imread(img_path)
src = []
# mouse callback handler
def mouse_handler(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONUP:
img = ori_img.copy()
src.append([x, y])
for xx, yy in src:
cv2.circle(img, center=(xx, yy), radius=5, color=(0, 255, 0), thickness=-1, lineType=cv2.LINE_AA)
cv2.imshow('img', img)
# perspective transform
if len(src) == 4:
src_np = np.array(src, dtype=np.float32)
width = max(np.linalg.norm(src_np[0] - src_np[1]), np.linalg.norm(src_np[2] - src_np[3]))
height = max(np.linalg.norm(src_np[0] - src_np[3]), np.linalg.norm(src_np[1] - src_np[2]))
dst_np = np.array([
[0, 0],
[width, 0],
[width, height],
[0, height]
], dtype=np.float32)
M = cv2.getPerspectiveTransform(src=src_np, dst=dst_np)
result = cv2.warpPerspective(ori_img, M=M, dsize=(width, height))
cv2.imshow('result', result)
cv2.imwrite(r'projetive_image/%s_result%s' % (filename, ext), result)
# main
cv2.namedWindow('img')
cv2.setMouseCallback('img', mouse_handler)
cv2.imshow('img', ori_img)
cv2.waitKey(0)
在显示图像之前,您可以简单地使用cv2.resize
缩小图像,或者如果您想保持纵横比,您可以使用imutils.resize
。 另一种方法是简单地使用cv2.imwrite
保存图像,然后在系统的本机图像查看器中打开它。
import cv2
import imutils
image = cv2.imread('1.jpg')
# Downsize without aspect ratio
image1 = cv2.resize(image, (500,500), interpolation=cv2.INTER_AREA)
# Downsize and maintain aspect ratio
image2 = imutils.resize(image, width=800)
cv2.imshow('image1', image1)
cv2.imshow('image2', image2)
cv2.waitKey()
您还可以使用cv2.resizeWindow
调整显示图像的 window 大小,而不是在显示之前调整图像大小。 因此,您需要在cv2.namedWindow
调用中设置cv2.WINDOW_NORMAL
WindowFlag 。
那将是一个最小的例子:
import cv2
import numpy as np
img = np.random.randint(0, 255, (4000, 3000, 3), np.uint8)
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('img', 800, 600)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
希望有帮助!
----------------------------------------
System information
----------------------------------------
Platform: Windows-10-10.0.16299-SP0
Python: 3.8.1
NumPy: 1.18.1
OpenCV: 4.2.0
----------------------------------------
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.