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

OpenCV教程——图像读取与显示什么是OpenCV ? OpenCV的全称是:Open Source Computer Vision Library OpenCV是Intel开源计算机视觉库。

什么是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。

image.png

灰度图像

灰度图像除了黑和白,还有灰色,它把灰度划分为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表示红、绿、蓝三原色,计算机里所有颜色都是三原色不同比例组成的,即三色通道。

image.png

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)

今天的文章OpenCV教程——图像读取与显示分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/23498.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注