什么是OpenCV ?

OpenCV的全称是:Open Source Computer Vision Library

OpenCV是Intel开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图画处理和计算机视觉方面的很多通用算法

长处:

1、 OpenCV 对非商业运用和商业运用都是免费的;

2、 开源的;

3、 能够运用于工程实践中;

缺点:

相对于Matlab而言,OpenCV基于C言语开发,编程复杂,开发周期较长。

能够看出,OpenCV的优缺点正好与Matlab的优缺点相反,两者各有所长,根据不同的要求选择不同的编程环境。

运用领域:

1、人机互动 2、物体辨认 3、图象分割 4、人脸辨认 5、动作辨认 6、运动盯梢 7、机器人

为什么有OpenCV?

计算机视觉市场巨大而且持续增长,且这方面没有规范API,现在的计算机视觉软件大概有以下三种:
1.研讨代码(慢,不稳定,独立并与其他库不兼容)
2.消耗很高的商业化工具(比方Halcon, MATLAB+Simulink)
3.依赖硬件的一些特别的解决方案(比方视频监控,制造控制体系,医疗设备)

这是现在的现状。而规范的API将简化计算机视觉程序和解决方案的开发。OpenCV致力于成为这样的规范API。

项目前史:

1999年1月,CVL项目启动。主要目标是人机界面,能被UI调用的实时计算机视觉库,为Intel处理器做了特定优化
2000年6月,第一个开源版本OpenCV alpha 3发布。
2000年12月,针对linux渠道的OpenCV beta 1发布。
期间,持续各种研讨。。。
2006年,支撑Mac OS的OpenCV 1.0发布。
2009年9月,OpenCV1.2(beta2.0)发布。
2009年10月1日,Version 2.0发布。
OpenCV 具有包含 500 多个C函数的跨渠道的中、高层 API。它不依赖于其它的外部库——虽然也能够运用某些外部库。
OpenCV 运用类BSDlisence,所以对非商业运用和商业运用都是免费(FREE)的。(细节参考 license)。
OpenCV 为Intel Integrated Performance Primitives (IPP) 供给了透明接口。 这意味着假如有为特定处理器优化的的 IPP 库, OpenCV 将在运行时自动加载这些库。
OpenCV供给的视觉处理算法非常丰富,而且他不分以C言语编写,加上其开源的特性,处理妥当,不需要添加新的外部支撑也能够完好的编译链接生成履行程序,所以很多人用它来做算法的移植,OpenCV的代码通过适当改写能够正常的运行在DSP体系和单片机体系中,现在这种移植在大学中常常作为相关专业本科生毕业设计或者研讨生课题的选题。

图画基础知识

图画都是由像素(pixel)构成的,即图画中的小方格,这些小方格都有一个明晰的方位和被分配的色彩数值,而这些一小方格的色彩和方位就决议该图画所呈现出来的样子。像素是图画中的最小单位,每一个点阵图画包含了一定量的像素,这些像素决议图画在屏幕上所呈现的大小。

二值图画

二值图画中任何一一个点非黑即白,要么为白色(像素为255), 要么为黑色(像素为0)。将灰度图画转换为二值图画的过程,常通过依次遍历判断实现,假如像素>=127则设置为255,不然设置为0。

OpenCV教程——图像读取与显示

灰度图画

灰度图画除了黑和白,还有灰色,它把灰度划分为256个不同的色彩,图画看着也更为明晰。将五颜六色

图画转换为灰度图是图画处理的最基本预处理操作,通常包含下面几种办法:

(1)浮点算法: Gray=R0.3+GO .59+B0. 11

(2)整数办法: Gray=(R30+G59+B11)/100

(3)移位办法: Gray=(R28+G151+B77)>>8;

(4)平均值法: Gray= (R+G+B) /3;(此程序采用算法)

(5)仅取绿色: Gray=G;

(6)加权平均值算法:根据光的亮度特性,公式: R=G=B=R0.299+G*0.587+B0. 144

通过上述任一种办法求得Gray后, 将本来的RGB(R,G ,B)中的R,G,B统一用Gray替换, 构成新的色彩RGB(Gray,Gray,Gray),用它替换本来的RGB(R,G,B)便是灰度图了。改动象素矩阵的RGB值,来到达五颜六色图转变为灰度图。

五颜六色图画

五颜六色图画是RGB图画,RGB表明红、绿、蓝三原色,计算机里一切色彩都是三原色不同比例组成的,即三色通道。

OpenCV教程——图像读取与显示

OpenCV读写图画

首要调用”pip install opencv-python”安装OpenCV库,可能会出现代码无法补全的问题,主张运用: pip install opencv-python==4.4.0.46

读入图画

OpenCV读图画主要调用下面函数实现: img = cv2.imread(文件名,[,参数])

  • 参数(1) cv2.IMREAD_ _UNCHANGED (图画不可变)
  • 参数(2) cv2.IMREAD_ GRAYSCALE (灰度图画)
  • 参数(3) cv2.IMREAD_ COLOR (读入五颜六色图画)
  • 参数(4) cv2.COLOR_ BGR2RGB (图画通道BGR转成RGB)

显现图画

显现图画调用函数如下:

cv2.imshow(窗口名,图画名)

窗口等候

cv2.waitKey(0)

键盘绑定函数,共一个参数, 表明等候毫秒数,将等候特定的几毫秒,看键盘是否有输入,返回值为ASCII值。假如其参数为0,则表明无限期的等候键盘输入;参数>0表明等候delay毫秒; 参数<0表明等候键盘单击。

删去一切窗口

cv2. destroyAllWindows()删去一切窗口

cv2. destroyWindows()删去指定的窗口

写入图片

retval = cv2.imwrite(文件地址,文件名)

# -*- coding:utf-8 -*-
import cv2
#读取图片
img = cv2.imread("test.jpg")
#显现图画
cv2.imshow("Demo", img)
#等候显现
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图画
cv2.imwrite("testyxz.jpg", img)