gpt4 book ai didi

python-3.x - Opencv - 将图像居中到窗口中

转载 作者:行者123 更新时间:2023-12-04 08:14:30 30 4
gpt4 key购买 nike

我目前正在使用 opencv-python 创建具有绘图可能性的图像查看器。
我的目标是在其中心有一个包含加载图像的全屏窗口。
我可以将窗口设置为全屏并显示图像。
我还可以实现一些基本的绘图,并允许使用鼠标监听器放大/缩小图像。
但是我找不到将图像居中显示在显示窗口中的方法。
这是窗口部分的示例代码

#!/usr/bin/python3

import cv2

# Set screen resolution
resolution = (1920, 1080)

# Create window
cv2.namedWindow('Output')
cv2.resizeWindow("Output", resolution[0], resolution[1])

# Read and show image
inputImage = cv2.imread("stackoverflow.png")
cv2.imshow('Output', inputImage)

# Wait for keyboard input
chr = -1
while 0 < cv2.getWindowProperty("Output", cv2.WND_PROP_AUTOSIZE):
chr = cv2.waitKey(100)
结果:
enter image description here
Matplotlib 做得很好,它甚至可以根据窗口大小调整打印图像的大小。
enter image description here
我想使用 opencv 实现类似的东西。
  • 是否可以使用 opencv
  • 实现这样的布局?
  • 我应该寻找像 GTK 这样的窗口管理器来实现它吗?
  • 最佳答案

    import numpy as np
    import cv2


    img = cv2.imread("./car-top-view.png")

    w,h,c = img.shape

    # Set screen resolution
    resolution = (1920, 1080)

    # Create window
    cv2.namedWindow("Output")
    cv2.resizeWindow("Output", resolution[0], resolution[1])

    new_w = int(w*1.5)
    new_h = int(h*1.5)

    img = cv2.resize(img, (new_w, new_h))

    img = cv2.copyMakeBorder( img, int((1080-new_h)/2), int((1080-new_h)/2), int((1920-new_w)/2), int((1920-new_h)/2), 0)


    cv2.imshow("Output",img)

    if cv2.waitKey(0) == ord('q'):
    cv2.destroyAllWindows()
    这应该会产生所需的输出。在这种情况下,它使用自定义系数 (1.5) 重新缩放图像以保持纵横比。然后用 0 填充图像,使其保持在屏幕中间。结帐 cv2.copyMakeBorder更多选择。

    关于python-3.x - Opencv - 将图像居中到窗口中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65776363/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com