我对 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 语句之后,打印裁剪返回“[]”和空列表。
所以,是的,为什么它适用于数字和其他情况,但不是在这里?!
非常感谢任何帮助,谢谢!