首页 > 解决方案 > img[y:y+h, x:x+w] 坐标系的工作原理

问题描述

对于这两种情况,我都有相同的图像(200x200)。我正在实现模板匹配,所以想法是使用此代码的矩形区域,如模板:

image = cv.imread('some-image.tif', 0)
cv.rectangle(image,(150, 50),(200,100),(255,0,0),2)
plt.imshow(image, 'gray')
plt.title('With rectangle')
plt.show()

但是当我在模板匹配代码中运行以下行时,矩形与上面的代码不一样: template = image[50:100, 150:200]

为什么我没有得到相同的投资回报率?我知道表格是[y:y+h, x:x+w]

标签: pythonimageopencv

解决方案


我认为您的行image = cv.imread(image, 0)语法不正确。您需要在 cv.imread()` 中使用实际的 filename.suffix

你的命令在 Python/OpenCV 3 中对我来说很好用

输入:

在此处输入图像描述

import cv2
import numpy as np

img = cv2.imread('zelda1.jpg')
cv2.rectangle(img,(150, 50),(200,100),(255,0,0),1)

roi = img[50:100, 150:200]

cv2.imwrite('zelda1_rect.jpg', img)
cv2.imwrite('zelda1_roi.jpg', roi)

cv2.imshow("img", img)
cv2.imshow("roi", roi)
cv2.waitKey(0)

带矩形的图像:

在此处输入图像描述

投资回报率:

在此处输入图像描述


推荐阅读