OpenCV:selectROI返回零tup

2024-09-24 02:21:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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()

Tags: 代码图像imageimportnumpyfalse区域img
2条回答

图像右上角为原点

X向下增加

Y从左到右递增

左上角是x1,y1 左下角是x2,y2

所以图像[y1:y2,x1:x2]应该会给你所选的感兴趣区域

Image ROI

您需要裁剪使用鼠标显示的图像上的区域。选择感兴趣的区域后,按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 image description here

就这些了!!在

  • 变量r返回一个元组,在本例中是:(31, 65, 125, 120)

在哪里

^{pr2}$

相关问题 更多 >