在使用python的opencv中 - 如何创建一个新图像,它只是来自另一个图像的roi的副本?
当然有一些东西Mat roi = img( Rect(x,y,w,h) );
用于python,或者比蛮力更优雅的东西
rect=[x,y,w,h]
img = cv2.imread(subst)
roi= np.zeros((rect[3],rect[2],3),np.uint8) #is this really reversed? who ordered that?
cv2.rectangle(img,(x,y),(w+x,h+y),[255,0,0],thickness=1)
cv2.imshow('img',img)
cv2.waitKey()
#cv.Copy(cv.fromarray(img),cv.fromarray(roi),cv.fromarray(mask)) #can't make it work...
for x in range(rect[2]):
for y in range(rect[3]):
roi[y,x,:]=img[y+rect[1],x+rect[0],:]
和btw x,y坐标的顺序 - 是[x,y,c]还是[y,x,c]来指定x(水平)和y(垂直)的点?看起来它的[y,x,c],iiuc,而cv2.rectangle是(x,y)和img.shape是(y,x),它会比(g,r,b)更烦人(r,g,b)....
答案 0 :(得分:4)
import os
import cv2
img = cv2.imread(filename)
roi = img[row:row+height,column:column+width]
cv2.imshow('ROI',roi)
cv2.waitKey(0)