opencv函数

1. cv2.imread('图片名',flags) 读入图像

flags参数:

  • cv2.IMREAD_ANYCOLOR (或4)
  • cv2.IMREAD_ANYDEPTH (或2)
  • cv2.IMREAD_COLOR (或1)
  • cv2.IMREAD_GRAYSCALE (或0)
  • cv2.IMREAD_LOAD_GDAL (或8)
  • cv2.IMREAD_UNCHANGED (或-1)
img = cv2.imread('D:/img/test/000.jpg') //打开原图
img = cv2.imread('D:/img/test/000.jpg', cv2.IMREAD_GRAYSCALE) //以灰度模式读入图像
img = cv2.imread('D:/img/test/000.jpg', cv2.IMREAD_COLOR) //默认参数,读入彩色图像,图像的透明度会忽略
img = cv2.imread('D:/img/test/000.jpg', cv2.IMREAD_UNCHANGED) //读入原图,包括alpha通道

注意:若图片名(或路径)错误,print img输出None

2. cv2.imshow('窗口标题',已读入的图像变量) 显示图像 窗口会自动调整为图像大小,可创建多个不同名的窗口

3. cv2.waitKey(毫秒级时间) 键盘绑定函数 按下任意键,返回按键的ASCII码,程序继续运行

  • 如果没有键盘输入,返回-1
  • 设置参数为0时,无限期等待输入
  • 也可以被用来检测特定键是否被按下
cv2.waitKey(0)    //32位系统
cv2.waitKey(0)&0xFF    //部分64位系统

4. cv2.destroyAllWindows() 删除建立的所有窗口

5. cv2.destroyWindow('windowname') 删除特定窗口,括号内为窗口名称

6. cv2.namedWindow('windowname') 创建窗口,括号内为窗口名称

  • cv2.WINDOW_AUTOSIZE 窗口大小自适应,不可调整
  • cv2.WINDOW_NORMAL 可调整窗口大小

提示:当图像维度太大或者要添加轨迹条时,调整窗口大小很有用

7. cv2.imwrite('img_name',已读入的图像变量) 保存图像

8. cv2.setMouseCallback('窗口名称', onMouse, userdata)获取鼠标输入

  • onMouse 自定义回调函数,鼠标响应函数。指定窗口里每次鼠标事件发生时,被调用的函数指针。

    onMouse函数原型:

    void on_Mouse(int event, int x, int y, int flags, void* param);

    • event是 CVEVENT*变量之一

    • x和y是鼠标指针在图像坐标系的坐标(不是窗口坐标系)

    • flags是CV_EVENT_FLAG的组合, param是用户定义的传递到setMouseCallback函数调用的参数。

  • userdata 可选参数,传递给回调,默认为0

鼠标回调事件参数

  • CV2.EVENT_MOUSEMOVE 0 鼠标移动
  • CV2.EVENT_LBUTTONDOWN 1 左键按下
  • CV2.EVENT_RBUTTONDOWN 2 右键按下
  • CV2.EVENT_MBUTTONDOWN 3 中键按下
  • CV2.EVENT_LBUTTONUP 4 左键松开
  • CV2.EVENT_RBUTTONUP 5 右键松开
  • CV2.EVENT_MBUTTONUP 6 中键松开
  • CV2.EVENT_LBUTTONDBLCLK 7 双击左键
  • CV2.EVENT_RBUTTONDBLCLK 8 双击右键
  • CV2.EVENT_MBUTTONDBLCLK 9 双击中键

鼠标回调事件的标志参数

  • CV2.EVENT_FLAG_LBUTTON 1 左键按下
  • CV2.EVENT_FLAG_RBUTTON 2 右键按下
  • CV2.EVENT_FLAG_MBUTTON 4 中键按下
  • CV2.EVENT_FLAG_CTRLKEY 8 按下 Ctrl 键
  • CV2.EVENT_FLAG_SHIFTKEY 16 按下 Shift 键
  • CV2.EVENT_FLAG_ALTKEY 32 按下 Alt 键

9. image.item()

10. image.itemset()

11. VideoCapture类

VideoCapture.read() 返回布尔值(P24)

当有多个摄像头时,用 grab()retrive() 方法代替 read() 方法

VideoCapture.isOpened 方法,判断VideoCapture类是否正确打开,返回布尔值

12. VideoWriter类

VideoWriter.write() 写入图像(P22)

13. CaptureManager类

  • writeImage()函数

  • startWritingVideo()函数

  • stopWritingVideo()函数

  • enterFrame类

  • existFrame类

调用之前会延迟写入文件;调用过程中,帧属性可能会在窗口中显示,取决于:

results matching ""

    No results matching ""