Python第三方模块OpenCV计算机视觉库常用方法介绍(一)
老眼 2018-01-09 16:25:43
分 享


1、模块简介

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

2、模块安装

安装opencv过程中会自动安装numpy模块

pip install opencv-python
如果你是windows安装了python2和python3请使用如下命令安装
py -3 -m pip install opencv-python
如果下载速度过慢请推荐豆瓣源安装
py -3 -m pip install -i https://pypi.douban.com/simple/ opencv-python


3、opencv支持python的版本

python2.7
python3.4
python3.5
python3.6


4、使用方式


import cv2


5、方法介绍

(1)cv2.imread(图片路径及名称,属性)

 读入图像(获取图片属性)

 属性:指定图像用哪种方式读取文件

cv2.IMREAD_COLOR:读入彩色图像,默认参数,Opencv 读取彩色图像为BGR模式
cv2.IMREAD_GRAYSCALE:读入灰度图像。

(2)cv2.imwrite(保存图像名,需保存图像[,第三个可选参数])

保存图像,第一个参数是保存的路径及文件名,第二参数个是图像矩阵

例子:

不需要第三个参数

cv2.imwrite("D:\\lybbn.jpg", img)

第三个可选参数:
# cv2.IMWRITE_JPEG_QUALITY指定jpg质量,范围0到100,默认95,越高画质越好,文件越大
cv2.imwrite('lybbn_new.jpg', img, (cv2.IMWRITE_JPEG_QUALITY, 80))

# cv2.IMWRITE_PNG_COMPRESSION指定png质量,范围0到9,默认3,越高文件越小,画质越差
cv2.imwrite('lybbn_new.png', img, (cv2.IMWRITE_PNG_COMPRESSION, 5))

(3) cv2.resize()

图片缩放

cv2.resize(img, (width, height),interpolation=cv2.INTER_CUBIC)

参数interpolation中,默认使用cv2.INTER_LINEAR,缩小最适合使用:cv2.INTER_AREA,放大最适合使用:cv2.INTER_CUBIC或cv2.INTER_LINEAR。

cv2.resize(img, (200, 200)) 缩放成200x200的方形图像

res=cv2.resize(img,None,fx=2,fy=2)  放大为原来的两倍,此处None本应该是输出图像的尺寸,因为后边设置了缩放因子


(3)cv2.namedWindow(窗口名)

创建一个窗口,并指定窗口名

(4)cv2.imshow(窗口名,图像文件)

在窗口中显示图像

(5)cv2.waitKey(等待键盘的时间)

键盘绑定函数 ,一般与cv2.imshow()搭配使用

参数说明:

等待键盘的时间:单位为毫秒

一个实用的功能就是通过按键进入if条件语句,比如按ESC关闭窗口,退出循环,结束程序。

k = cv2.waitKey(5)
    if k == 27:
        break


通常为: cv2.waitKey(0)  如果不添这一句,在IDLE中执行窗口直接无响应。在命令行中执行的话,则是一闪而过。


(6)cv2.cvtColor(image,method)

图像灰度转换

参数说明:

image:经过imread的图像名称
method:转换方式,具体方式如下
        cv2.COLOR_BGR2GRAY:转换为灰度图
        cv2.COLOR_BGR2HSV:转换为HSV颜色空间。

例子:

import cv2
imgsr=cv2.imread("/Users/laoyan/Desktop/sourcetest.png")
img6=cv2.cvtColor(imgsr,cv2.COLOR_BGR2GRAY)
cv2.imshow('img',img6)
cv2.waitKey(0)



(7)cv2.rectangle(图像,矩形左上角点坐标,矩形右上角点坐标,框的颜色,框的粗细)

在图像中绘制矩形,cv2.rectangle有五个参数

参数说明:

图像:经过imread的图像名称
矩形左上角点的坐标:格式为(x,y),x表示左上角点离图像left的距离,y为左上角点离top的距离
矩形右下角点的坐标:格式为(x,y),x表示右下角点离图像left的距离,y为右下角点离top的距离
框的颜色:为rgb颜色,需要传入一个元组,例如(0,0,255)
框的粗细:格式填写数字即可,数字越大线框越粗,框的粗细为-1对封闭图形来说是内部填满,所以画出来的就是红色的圆面而不是圆形

例子:

import cv2
imgsr=cv2.imread("/Users/laoyan/Desktop/sourcetest.png")
img4=cv2.rectangle(imgsr,(30,20),(40,80),(0,0,255),2)
cv2.imshow('img',img4)
cv2.waitKey(0)


(8)cv2.circle(图像,圆心坐标,半径,线的颜色数组,线的粗细)

在图像中绘制圆形

参数说明:

图像:经过imread的图像名称
圆心的坐标:格式为(x,y),x表示圆心点离图像left的距离,y为圆心点离top的距离
半径:画圆的半径
线的颜色数组:为rgb颜色,需要传入一个元组,例如(0,0,255)
线的粗细:默认为1,格式填写数字即可,数字越大线框越粗,线的粗细为-1对封闭图形来说是内部填满,所以画出来的就是红色的圆面而不是圆形

例子:

import cv2
imgsr=cv2.imread("/Users/laoyan/Desktop/sourcetest.png")
img5=cv2.circle(imgsr,(80,100),50,(0,0,255),2)
cv2.imshow('img',img5)
cv2.waitKey(0)



(9)cv2.line(图像,第一个点的坐标,第二个点的坐标,线的颜色,线条粗细)

在图像中绘制一条线

参数说明:

图像:经过imread的图像名称
第一个点的坐标: 格式为(x,y),x表示第一个点离图像left的距离,y为第一个点离top的距离
第二个点的坐标: 格式为(x,y),x表示第二个点离图像left的距离,y为第二个点离top的距离
线的颜色:为rgb颜色,需要传入一个元组,例如(0,0,255)
线的粗细:默认为1,格式填写数字即可,数字越大线框越粗

例子:


import cv2
imgsr=cv2.imread("/Users/laoyan/Desktop/sourcetest.png")
img3=cv2.line(imgsr,(10,20),(40,80),(0,0,255),2)
cv2.imshow('img',img3)
cv2.waitKey(0)


(10)cv2.putText(图像,需要添加字符串,需要绘制的坐标,字体类型,字号,字体颜色,字体粗细)

在图片上添加文字

参数说明:

图像:经过imread的图像名称
需要添加字符串:为你自定义的需要添加进上的文字信息
需要绘制的坐标:需要写x和y的坐标格式为:(10,50),x表示文字距离图片left左边的距离,y表示文字底部距离图片顶部top的距离
字体类型:一般推荐使用cv2.LINE_AA
字号:数字越大,字体越大
字体颜色:为rgb颜色,需要传入一个元组,例如(0,0,255)
字体粗细:默认为1,数字越大字体越粗

例如:


import cv2
imgsr=cv2.imread("/Users/laoyan/Desktop/sourcetest.png")
img2=cv2.putText(imgsr,"lybbn",(50,80),cv2.LINE_AA,4,(0,0,255),2)
cv2.imshow('img',img2)
cv2.waitKey(0)



(11)cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])

在图片上绘制椭圆形

参数说明:

img 图像

center 中心坐标

axes 椭圆的尺寸(长短轴)

angle 旋转角度

startAngle 起始角度

endAngle 终止角度

color 椭圆的颜色为rgb

(12)cv2.namedWindow(窗口名,属性)

创建一个窗口

(13)cv2.destoryAllWindows(窗口名)

删除(释放)建立的窗口


参考地址

https://github.com/skvark/opencv-python
http://docs.opencv.org/


吐槽一下

游客

所有吐槽
  • 暂时还没有吐槽,赶紧来吐槽!