我對OpenCV比較陌生。我從教程收集等,你可以使用這個腳本裁剪:Python opencv作物不能正常工作
import cv2
import numpy as np
import video
cam = cv2.VideoCapture(0)
ret,vis = cam.read()
crop = vis[100:400, 100:300]
cv2.imshow("Img",vis)
cv2.imshow("Crop",crop)
cv2.waitKey(0)
這工作得很好。我沒有得到任何錯誤。
然而,當我把它變成我的主腳本,這是行不通的,我已經將範圍縮小到這部分代碼:
def PicTake(self):
ret,vis = self.cam.read()
x1,y1 = self.selection[0]
x2,y2 = self.selection[1]
a = 0
taken = 0
while taken == 0:
if cv2.imread("C:\Python27\opencv\samples\python2\Major\Test"+str(a)+".png") == None:
crop = vis[x1:y1, x2:y2]
print crop
cv2.imshow("crop",crop)
cv2.imwrite("C:\Python27\opencv\samples\python2\Major\Test"+str(a)+".png",crop)
taken = 1
else:
a+=1
return ("Picture Taken")
其中self.selection只是一個兩個列表元組[(x1,y1),(x2,y2)]。在第一個if語句之後,print crop返回「[]」和空列表。
所以是的,爲什麼它與數字和其他情況良好,但不是在這裏?
任何幫助非常感謝,謝謝!
什麼是[(X1,Y1)的值,(x2,y2 )? – Bull
我的代碼是: 'def onmouse(self,event,x,y,flags,param): self.onwindow = 1#鼠標在屏幕上 x,y = np.int16([x ,y])#BUG self.currentxy =(x,y) if event == cv2.EVENT_LBUTTONDOWN: self.RectOn = 0 #Del old rectangle and make new one self.click = 1 self。self.selection [1] =(0,0) if event == cv2.EVENT_LBUTTONUP: self.click = 0 self.x2y2 =(x,y) =(X,Y) self.selection [1] = self.x2y2 self.RectOn = 1 打印self.selection' –