如何 cv2.imshow 大尺寸图像?

我正在尝试对cv2.imshow我的图像进行透视转换。

但是,我的图像很大,所以我看不到整个画面:

http://img2.mukewang.com/62df4146000182e206600396.jpg

我该如何解决这个问题?


以下是我的代码:


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)



素胚勾勒不出你
浏览 223回答 2
2回答

婷婷同学_

在显示图像之前,您可以简单地使用缩小图像大小,cv2.resize或者如果您想保持纵横比,您可以使用imutils.resize. 另一种方法是简单地保存图像,cv2.imwrite然后在系统的本机图像查看器中打开它。import cv2import imutilsimage = cv2.imread('1.jpg')# Downsize without aspect ratioimage1 = cv2.resize(image, (500,500), interpolation=cv2.INTER_AREA)# Downsize and maintain aspect ratioimage2 = imutils.resize(image, width=800)cv2.imshow('image1', image1)cv2.imshow('image2', image2)cv2.waitKey()

郎朗坤

除了在显示之前调整图像大小,您还可以使用 调整显示图像的窗口cv2.resizeWindow的大小。因此,您需要在调用中设置cv2.WINDOW_NORMAL WindowFlagcv2.namedWindow。那将是一个最小的例子:import cv2import numpy as npimg = 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-SP0Python:      3.8.1NumPy:       1.18.1OpenCV:      4.2.0----------------------------------------
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python