gpt4 book ai didi

python - OpenCV:selectROI返回零元组

转载 作者:行者123 更新时间:2023-12-02 17:36:00 26 4
gpt4 key购买 nike

我正在尝试使用selectROI裁剪关注区域。但是在我的代码中,selectROI总是返回(0,0,0,0)作为元组。我尝试使用其他图像进行尝试,但是问题仍然存在。有人可以帮我吗?

    import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('diff-overlay.jpg')
r = cv2.selectROI("Image", img, False, False)
imCrop = img[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])]
cv2.imshow("Image", imCrop)
cv2.waitKey(0)
cv2.destroyAllWindows()

最佳答案

您应该使用鼠标在显示的图像上裁剪区域。选择感兴趣的区域后,按Enter键,它将返回裁剪的图像。现在,当您检查r的值时,它将返回裁剪图像的左上角和右下角坐标的元组。

代码:

if __name__ == '__main__' :

# Read image
im = cv2.imread("C:/Users/Desktop/Bengal_cat.png")

# Select ROI
r = cv2.selectROI(im, False, False)

# Crop image
imCrop = im[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])]

# Display cropped image
cv2.imshow("Image", imCrop)
cv2.waitKey(0)

cv2.destroyAllWindows()

插图:

假设我有以下图像:

enter image description here

现在,当代码执行 r = cv2.selectROI(im, False, False)
时,将显示图像,您可以在其中使用鼠标进行裁剪:

enter image description here

按下“Enter”键(或任何其他键)后,将显示裁剪的图像:

enter image description here

这就是全部!
  • 变量r返回一个元组,在这种情况下为:(31, 65, 125, 120)

  • 哪里,
    (31, 65, 125, 120)
    ^ ^ ^ ^
    | | | |
    x1 y1 | y2 = 120 + 65
    x2 = 125 + 31

    关于python - OpenCV:selectROI返回零元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50851658/

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