import cv2
camera = cv2.VideoCapture(0)
cv2.namedWindow('Webcam',cv2.WINDOW_NORMAL)
def onMouse(event,x,y,flags,param):
if event == 1: #1为鼠标左键返回值
cv2.imwrite("e:/pythoncode/csdn/5.jpg",frame) #保存当前帧frame为图片5.jpg
elif event == 2: #2为鼠标左键返回值
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #将当前帧frame转换为灰度图gray
cv2.imwrite("e:/pythoncode/csdn/h.jpg",gray) #保存当前帧frame(gray)为图片5.jpg
# cv2.imencode('.jpg',gray)[1].tofile('e:/pythoncode/csdn/55.jpg')
while cv2.waitKey(1)==-1:
success,frame=camera.read()
cv2.imshow('Webcam',frame)
cv2.setMouseCallback('Webcam',onMouse)
camera.release()
cv2.destroyAllWindows()
onMouse(event, x, y, flags, void*param)
event是cv_EVENT变量之一
x和y是鼠标指针在图像坐标系的坐标(不是窗口坐标系)
flags是cv_EVENT_FLAG的组合,param是用户定义的传递到setMouseCallback函数调用的参数
EVENT_MOUSEMOVE 0 #滑动
EVENT_LBUTTONDOWN 1 #左键点击
EVENT_RBUTTONDOWN 2 #右键点击
EVENT_MBUTTONDOWN 3 #中键点击
EVENT_LBUTTONUP 4 #左键放开
EVENT_RBUTTONUP 5 #右键放开
EVENT_MBUTTONUP 6 #中键放开
EVENT_LBUTTONDBLCLK 7 #左键双击
EVENT_RBUTTONDBLCLK 8 #右键双击
EVENT_MBUTTONDBLCLK 9 #中键双击
VideoCapture()和read()(摘自 OpenCV中各函数解释)
cameraCapture=cv2.VideoCapture(0)
success,frame = cameraCapture.read()
VideoCapture(0)表示打开笔记本内置摄像头,还可以VideoCapture("…/test.avi")
read()函数表示按帧读取视频,success,frame是read()的两个返回值,success是布尔值——如果读取帧是正确的则返回True,如果文件读取到结尾则返回False,Frame表示的是每一帧的图像,是一个三维矩阵