OpenCV学习笔记(五)

程序效果

  1. 打开摄像头显示图像
  2. 按任意键退出
  3. 鼠标左键(单机)将摄像头当前帧保存为一副彩色图像
  4. 手表右键(单机)将摄像头当前帧保存为一副灰度图像

源代码

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表示的是每一帧的图像,是一个三维矩阵

你可能感兴趣的:(opencv,python)