一、opencv介绍
??OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV拥有包括300多个C函数的跨平台的中、高层API。它不依赖于其它的外部库――尽管也可以使用某些外部库。
?OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。
· OpenCV包含如下几个部分∶
. Cxcore:一些基本函数(各种数据类型的基本运算等)。
. Cv∶图像处理和计算机视觉功能(图像处理,结构分析,运动分析,物体跟踪,
模式识别,摄像机定标)
· MI:机器学习模块,目前内容主要为分类器。
. Cvaux:一些实验性的函数(ViewMorphing,三维跟踪,PCA,HMM)
. Highgui:用户交互部分,(GUI,图象视频l/O,系统调用函数)
在python中使用需要安装该库并导入:
安装:pip install opencv-python
导入:import cv2
二、opencv使用示例
1、cv2 helloword
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret,frame = cap.read()
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllwindows ()
2、cv2视频读取处理
摄像头捕获视频
cv2.VideoCapture()
0︰默认计算机默认摄像头,若填入本地视频地址的字符串,则读取本地视频
return:VideoCapture类
cap = cv2.Videocapture(0)
<VideoCapture 0×10bd83ed0>
cap.read():读取摄像头捕获内容
return:ret true or false, frame:每—帧数据
3、cv2颜色空间变化
在OpenCV中有超过150种进行颜色空间转换的方法。OpenCV默认的颜色顺序是BGR,所
以需要转换
对于BGR-Gray的转换,使用的flag是cv2.COLOR_BGR2GRAY
对于BGR-HSV的转换,使用的flag是cv2.COLOR_BGR2HSV
对于BGR→RGB的转换,使用的flag是cv2.COLOR_BGR2RGB
注:HSV都是一种将RGB色彩模型中的点在圆柱坐标系中的表示法,,HSV即色相、饱和度、明度。H(色彩/色度)的取值范围是[0,179],S(饱和度)的取值范围[0,255],V(亮度)的取值范围[0,255]
cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
return: frame
gray = cv2.cvtColor( frame,cv2.COLOR_BGR2GRAY)
hsv = cv2.cvtColor( frame, cv2.COLOR_BGR2HSV)
rgb = cv2.cvtColor( frame,cv2.COLOR_BGR2RGB)
4、cv2画图函数
画矩形
cv2.rectangle(img,(xmin, ymin), (xmax,ymax),(0,255,0),1)
左上角顶点和右下角顶点的坐标
画框颜色:RGB颜色
画线的粗细:不设置,有默认值1
cv2.rectangle(frame,(350,0),(500,250),(0,255,0),3)
cv2.circle (img,(380,0),63,(255,0,0),3)
圆心与半径,显示颜色以及粗细
线的粗细:-1∶填充圆内部,其他值为粗细
cv2.circle(frame,(380,0),63,(0,0,255),1)
cv2.circle(frame,(380,0),63,(0,0,255),-1)
画线类型:虚线还是实线
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv.LINE_AA)
三、总结
??经过上边的介绍大家对opencv都有了一个简单的了解了,要想深入学习opencv,要具备以下前提:了解python的基本语法,对图像处理的理论知识要有一定的了解,会线性代数以及高数中的一些知识。深入学习最好的一个方法就是去坑opencv的官方手册,其对opencv库有着很详细的介绍以及使用范例,不过其官方手册是英文的,需要一定的英文基础,我给大家提供一份我找到的2018版opencv4.1的中文版官方手册。
链接:https://pan.baidu.com/s/1LepiDg3nPDT9ptIbNz22Vw
提取码:jytc
--来自百度网盘超级会员V5的分享
本文章参考了百度百科,他人技术文章以及哔哩哔哩免费教程,综合整理而来,如有侵权联系删除,小白一个,欢迎大家指导交流!
|