opencv3计算机视觉python语言实现,opencv轻松入门面向Python
本文主要介绍python计算机视觉OpenCV的介绍,以及与图像处理相关的简单操作,包括读入图像、显示图像以及与图像相关的理论知识。
00-1010前言1。什么是计算机视觉2。图像处理的基本操作。图像处理:图像处理中的读取:显示图像处理:图像保存3。图像成像基本原理介绍。图像分类4。灰色图像5。彩色图像(RGB) 6。像素处理操作。在python中使用numpy读取像素和修改像素。修改像素7。获取图像属性、形状和像素数。图像类型8。图像ROI 9。频道分裂。
目录
本专栏将非常详细地讲解计算机视觉OpenCV的相关知识,即操作,非常简单易懂。本文主要讲解计算机视觉的相关入门内容,与图像处理相关的简单操作,包括读入图像、显示图像以及与图像相关的理论知识。
前言
计算机视觉是一门研究如何让机器“看见”的科学。进一步说,是指用摄像机和计算机代替人眼对物体进行识别、跟踪和测量,并进一步做图形处理,使计算机处理一幅图像更适合人眼观察或传输到仪器上进行检测。计算机视觉作为一门科学学科,研究相关的理论和技术,试图建立一个能够从图像或多维数据中获取‘信息’的人工智能系统。这里的信息指的是香农定义的信息,可以用来帮助做“决策”。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何让人工系统从图像或多维数据中“感知”的科学。
视觉是各种应用领域不可或缺的一部分,如制造业、检验、文档分析、医疗诊断,和军事等领域中各种智能/自主系统中.由于其重要性,一些先进国家,如美国,已将计算机视觉的研究列为对经济和科学有广泛影响的科学和工程中的重大基础问题,即所谓的重大挑战。计算机视觉的挑战是为计算机和机器人开发与人类相当的视觉能力。视觉需要图像信号、纹理和颜色建模、几何处理和推理以及对象建模。一个合格的视觉系统应该紧密集成所有这些过程。
目前如果是在校学生,学习计算机视觉和机器学习的相关知识,无论是对自己的工作前景,还是对相关论文的写作,都是非常有用的。目前计算机的相关知识已经设计到各个专业领域,包括医学领域(计算机视觉分析CT成像),电学领域(用matlab绘图及相关领域),人脸识别,车牌识别等。而且想做交叉学科的,可以和任何领域交叉,对计算机没有壁垒。
因为我这个理工男,语言基础不太好,语言组织能力也比较弱,所以今天就讲到这里。综上所述,计算机视觉、机器学习等与计算机相关的东西尤为重要!
一、什么是计算机视觉
首先我们来看一段简单的计算机视觉相关代码:
导入cv2
Img=cv2.imread(path)#path指的是图像相关的路径。
cv2.imshow(Demo ,img)
cv2.nameWindow(Demo )
cv2.waitKey(0)
cv2.destroyAllWindows()
这个代码可以显示在计算机中。
示出img的相关图像。接下来我们讲解一下每一步的相关操作。
图片处理:读入图像
相关函数:image=cv2.imread(文件名相关路径[显示控制参数])
文件名:完整的路径。
其中参数包括:
cv.IMREAD_UNCHANGED :表示和原图像一致
cv.IMREAD_GRAYSCALE : 表示将原图像转化为灰色图像。
cv.IMREAD_COLOR:表示将原图像转化为彩色图像。
例如:
cv2.imread(‘d:image.jpg’,cv.IMREAD_UNCHANGED)
图片处理:显示图像
相关函数:None=cv2.imshow(窗口名,图像名)
例如:cv2.imshow(demo,image)
但是在OpenCV中我们图像显示还是要加上相关约束:
retval=cv2.waitKey([delay])
如果没有这个限制,那么显示的图像就会一闪而过,就会发生错误。
其中delay参数包括:
dealy=0,无限等待图像显示,直到关闭。也是waitKey的默认数值。
delay<0,等待键盘点击结束图像显示,也就是说当我们敲击键盘的时候,图像结束显示。
delay>0,等待delay毫秒后结束图像显示。
最后我们还需要显示
cv2.destroyAllWindows()
把图像从内存中彻底删除。
图片处理:图像保存
相关函数:retval=cv2.imwrite(文件地址,文件名)
例如:
cv2.imwrite(‘D:test.jpg’,img)
将img保存到了路径D:test.jpg
三、图像处理入门基础
图像成像原理介绍
首先我们第一个要深深深深的刻在脑子里的概念就是:
图片是由像素点构成的:
生动一点表示就是这样:
这样就可以完美的展示出计算机图像的成像原理,就是用一个个有颜色的像素点拼接而成的。
图像分类
图像一般分为三类:
一、二值图像
二值图像表示的意思就是每一个像素点只由0和1构成,0表示黑色,1表示白色,而且这里的黑色和白色是纯黑和纯白。所以我们看到的图像也就是这个样子。我们以官网丽娜为例子。
四、灰度图像
灰度图像就是一个8位的位图。什么意思呢?就是说00000001一直到11111111,这就是二进制表示。如果表示成我们常用的十进制就是0-255。其中0就表示纯黑色,255就表示纯白色,中间就是处于纯黑色到纯白色的相关颜色。我们还是以丽娜为例。
灰度图像一块像素点:
五、彩色图像(RGB)
计算机中所有的颜色都可以由R(红色通道)、G(绿色通道)、B(蓝色通道)来组成,其中每一个通道都有0-255个像素颜色组成。比如说R=234,G=252,B=4就表示黄色。显示出来的也是黄色。所以说彩色图像由三个面构成,分别对应R,G,B。我们还是以丽娜为例子:
所以说我们就可以知道复杂程度排序的话就是:彩色图像-灰度图像-二值图像。所以我们在进行人脸项目或者是车牌识别项目中最最最常用的操作就是将彩色图像转化为灰度图像,然后将灰度图像转为最简单的二值图像。
六、像素处理操作
读取像素
相关函数:返回值=图像(位置参数) 我们先以灰度图像,返回灰度值:
p=img[88,142]
print§
这里我们就可以返回图片坐标[88,142]处的灰度值。
然后我们以彩色图像为例子:
我们知道彩色图像由BGR三个通道的值构成。那么我们需要返回三个数值:
blue=img[78,125,0]
green=img[78,125,1]
red=img[78,125,2]
print(blue,green,red)
这样我们就返回了这三个数值。
修改像素
直接暴力修改。
对于灰度图像, img[88,99]=255
对于彩色图像,
img[88,99,0]=255
img][88,99,1]=255
img[88,99,2]=255这里也可以写成
img[88,99]=[255,255,255]等同于上方。
改动多个像素点
例如还是以彩色图像为例子:
i[100:150,100:150]=[255,255,255]
意思也就是将图像横坐标100到150和纵坐标100到150的这个区间全部用白色替代。
使用python中的numpy修改像素点
读取像素:
相关函数:返回值=图像.item(位置参数)
我们以灰度图像为例:
o=img,item(88,142)
print(o)
对于彩色图像我们还是:
blue=img.item(88,142,0)
green=img.item(88,142,1)
red=img.item(88,142,2)
然后print(blue,green,red)
修改像素:
图像名.itemset(位置,新的数值)
我们以灰度图像为例子:
img.itemset((88,99),255)
对于BGR图像:
img.itemset((88,99,0),255)
img.itemset((88,99,1),255)
img.itemset((88,99,2),255)
import cv2
通过这段代码我们就可以看得出来像素的更改。
对于彩色图像也是一样。
七、获取图像属性
形状
shape可以获取图像的形状,返回值包含行数、列数通道数的元组。
灰度图像返回行数列数
彩色图像返回行数、列数、通道数。
import cv2
像素数目
size可以获取图像的像素数目。
灰度图像:行数列数
彩色图像:行数列数*通道数
图像类型
dtype返回的是图像的数据类型
import cv2
八、图像ROI
ROI(region of interest)表示感兴趣区域
从被处理的图像中以方框、圆、椭圆或者不规则多边形等方式勾勒出需要处理的区域。可以通过各种算子(operator)和函数来求ROI,并进行下一步操作。
import cv2
我们还可以将感兴趣的图像加入到别的图像当中。
九、通道的拆分与合并
拆分
import cv2
我们在OpenCV中有专门拆分通道的函数:
cv2.split(img)
import cv2
合并
import cv2
我们将上方的拆分图像进行merge合并就可以得到以下结果:
到此这篇关于python计算机视觉OpenCV入门讲解的文章就介绍到这了,更多相关python OpenCV 内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。