一、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'): # 按 q键退出
		break
		
#释放capture资源
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(色彩/色度)的取值范围是[0179],S(饱和度)的取值范围[0255],V(亮度)的取值范围[0255]

	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,(3500)(500250)(02550)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的分享

本文章参考了百度百科,他人技术文章以及哔哩哔哩免费教程,综合整理而来,如有侵权联系删除,小白一个,欢迎大家指导交流!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐