第1章 图片与初用OpenCV

2024-01-07 21:52
文章标签 opencv 图片 初用

本文主要是介绍第1章 图片与初用OpenCV,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在本章,初步介绍OpenCV的一些基本操作,例如图片的读取以及图片格式的转换。1图片在计算机中的几种存储形式2图片的读取和延时操作3图片的各种输出形式

1.1 图片在计算机中的存储形式
即使我们对图片在计算机中的存储格式不是很清楚,也知道图片在计算机中是以二进制的形式存储的。图片如何转为二进制的形式在这里不进行详细说明,本节只讲程序像素X是如何以矩阵的形式进行图片的操作和相关运算的。
一张1024*960像素的图片,如果我们在程序里使用它或者对它进行一些操作,那么它就是一个960行,1024列的二维矩阵。矩阵的每一个元素存储的都是一个列表,而列表里面存储的则是各个通道的值,那什么是通道呢?
在讲通道之前,我们先了解一下图片的几种存储形式。
1.1.1 BGR图
我们平时在生活中拍摄的图片一般是RGB(R:红色,G:绿色,B:蓝色)格式的图片,在OpenCV中,图片常使用的格式是BGR的,两者本质上没有区别,只是使用的习惯不同。调节3中颜色的值可以构成不同颜色的像素点,但是我们在处理图片的时候,一般都不直接采用BGR图片进行操作,二十需要进行图片颜色格式的转换。
我们称B,G,R是图片上面每个像素点构成的通道,所以BGR图是一个三通道的图片。在OpenCV里,每个通道的取值范围是0~255,我们可以通过Python中元组的形式进行颜色的合成,如(255,255,255)为白色,(0,0,0)为黑色。
1.1.2 灰度图
相比BGR图,灰度图的每个像素点不再由B,G,R这3个通道构成,它只由一个通道来控制,即灰度值,所以灰度图是由灰度值来控制的单通道图。灰度值的取值范围为0~255;如果取哦,表示黑色;如果取255表示白色。
1.1.3 HSV图
HSV图显示出来也是彩色的,且HSV图也是由3个通道构成的,只不过HSV图里面的3个通道和BGR图中的不同,它的3个通道如下:
H:色彩或色度,它取值范围是0~179
S: 饱和度,它的取值范围是0~255
V: 亮度,它的取值范围是0~255
HSV其实也可以理解为RGB的另一种表达方式,这种表达方式更有利于我们对指定颜色的物体进行追踪和提取
1.1.4 二值图
二值图可以理解为一种很特殊的灰度图,它不具有通道,并且图中每个像素点的取值只是0或255,换句话,非黑即白。而灰度图与二值图不同的地方在于,灰度图可以取0~255的任何一个值。
二值图的意义在于他可以帮助用户去除图片的噪点,使得图片内只存在我们想要的那个物体的二值化表示部分。
1.2 图片的读取与写出
现在我们来介绍图片的读取以及写出,虽然这是OpenCV中非常基础的操作,但是它贯穿整个OpenCV的学习过程。
1.2.1 图片的读取
现在需要进行图片的读取,需要调用的函数是cv2.imread,它的语法如下。
cv2.imread(filename,flag=1)
其参数分别解释如下。
filename:读取图片的相对地址
flag:设置读取格式,默认为1,表示按照BGR三通道的方式进行读取,如果选择0,则以灰度图单通道的方式进行读取
示例代码如下:
import cv2
img=cv2.imread(“c://desktop/1.jpg”)
这个时候,img变量就已经是矩阵形式的“1.jpg"图片,并且她的每个像素点都是以BGR三通道的方式进行存储的。
如果我们想要以灰度图的方式读取图片,只需要将flag参数设置为0
img=cv2.imread(“c://desktop/1.jpg”,0)
此时,img变量中保存的就是单通道的”1.jpg" 图片的矩阵形式,矩阵的每个元素列表中只有一个灰度值。
1.2.2 图片的保存
接下来介绍图片的保存函数,也就是cv2.imwrite函数,语法如下:
cv2.imwrite(filename,img)
参数分别解释如下:
filename:要保存的图片名字,此处也是相对地址
img: 要保存的图片的矩阵形式
示例代码
import cv2
img=cv2.imread(“1.jpg”,0)
cv2.imwrite(“2.jpg”,img)
上诉代码就是将文件夹中1.jpg ,以矩阵的方式读取到程序中,然后将它以2.jpg为名字保存到所在文件夹中
1.2.3 BGR图的读取与写出
import cv2
img=cv2.imread(“1.jpg”,1)
cv2.imwrite(2.jpg,img)
等价于如下:
img=cv2.imread(“1.jpg”,cv2.IMREAD_COLOR)
cv2.imwire(“2.jpg”,img)
1.2.4 灰度图的读取与写出
import cv2
img=cv2.imread(“1,jpg”,0)
cv2.imwrite(“2.jpg”,img)
等价于
img=cv2.imread(“1,jpg”,IMREAD_GRAYSCALE)
cv2.imwrite(“2.jpg”,img)
1.2.5 图片展示
我们还没在程序运行的时候看到过图片,如果想在运行的时候看到图片的当前状态,需要使用cv2.imshow函数进行图片展示,如下
cv2.imshow(name,img)
参数
name:展示窗口的名字
img:图片的矩阵形式
如下函数
import cv2
img=cv2.imread(“1.jpg”)
cv2.imshow(“image”,img)
cv2.imwrite(“2.jpg”,img)
cv2.destroyAllWindows()
当我们在运行上述代码的时候,可以发现确实有一张图片弹出来了,但是很快就关闭了,原因在于cv2.imshow函数并没有延时的作用,可是计算机的运行速度比计算机窗口弹出速度快,所以窗口只是显示了极短的时间,代码已经执行完了,图片自动关闭。怎么才可以让图片窗口停留长呢?
很简单,既然cv2.imshow这个函数没有延迟作用,那么使用的函数的这行代码和下一行代码之间加一个延时函数就可以了
1.2.6 图片延时
现在我们在cv2.imshow所在的行和下一行代码之间加一个延时的函数来确保人眼能看清楚窗口。我们需要cv2.waitKey函数做到这一点,语法如下
cv2.waitKey(time)
其中,time表示等待的时间,单位为毫秒
这个函数是在time时间内,计算机会等待我们键盘上的命令,如果在time内程序没有等到按键指令它就自动进入下一帧。因为这个是图片没有下一帧,所以是自动关闭窗口,
如果我们把这个time 设置成0,并不是等待0 毫秒然后再执行下一帧,而是停止到当前帧,有案件指令它会进入下一帧。所以在显示单张图片的时候大多数写cv2.waitKey(0)
1.2.7
图片读取演示
介绍了如何添加延时函数后,我们尝试读取图片,示例代码
import cv2
img=cv2.imread(“1.jpg”)
cv2.imshow(“image”,img)
cv2.waitKey(0)
cv2.imwrite(“2.jpg”,img)
cv2.destoryAllwindows()
此时图片自动停留在桌面,按任意键图片消失,程序关闭。如果我们想通过添加某个特定键程序才关闭,可以通过添加一个if语句进行判定。如果按的键不为指定的键,键一直处于while循环中,直到摁到指定键,才会通过break语句结束循环,示例代码
import cv2
img=cv2.imread(“1.jpg”)
cv2.imshow(“image”,img)
while 1:
if cv2.waitKey(0)==ord(“q”):
break
else:
pass

cv2.waitKey(0)
cv2.imwrite(“2.jpg”,img)
cv2.destoryAllwindows()

这篇关于第1章 图片与初用OpenCV的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581343

相关文章

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元