目录
前言
推荐
1、什么是计算机视觉
2、图片处理基础操作
首先我们来看一段简单的计算机视觉相关代码:
import cv2
img=cv2.imread('path')#path指图片相关路径
cv2.imshow('demo',img)
cv2.namewindow('demo')
cv2.waitkey(0)
cv2.destroyallwindows()
这段代码就可以在计算机中显示出img的相关图像。接下来我们讲解一下每一步的相关操作。
2.1 图片处理:读入图像
2.2 图片处理:显示图像
2.3 图片处理:图像保存
3、图像处理入门基础
3.1 图像成像原理介绍
首先我们第一个要深深深深的刻在脑子里的概念就是:
生动一点表示就是这样:
这样就可以完美的展示出计算机图像的成像原理,就是用一个个有颜色的像素点拼接而成的。
3.2 图像分类
3.2.1 二值图像
二值图像表示的意思就是每一个像素点只由0和1构成,0表示黑色,1表示白色,而且这里的黑色和白色是纯黑和纯白。所以我们看到的图像也就是这个样子。我们以官网丽娜为例子。
3.2.2灰度图像
灰度图像就是一个8位的位图。什么意思呢?就是说00000001一直到11111111,这就是二进制表示。如果表示成我们常用的十进制就是0-255。其中0就表示纯黑色,255就表示纯白色,中间就是处于纯黑色到纯白色的相关颜色。我们还是以丽娜为例。
3.2.3彩色图像(rgb)
计算机中所有的颜色都可以由r(红色通道)、g(绿色通道)、b(蓝色通道)来组成,其中每一个通道都有0-255个像素颜色组成。比如说r=234,g=252,b=4就表示黄色。显示出来的也是黄色。所以说彩色图像由三个面构成,分别对应r,g,b。我们还是以丽娜为例子:
所以说我们就可以知道复杂程度排序的话就是:彩色图像-灰度图像-二值图像。所以我们在进行人脸项目或者是车牌识别项目中最最最常用的操作就是将彩色图像转化为灰度图像,然后将灰度图像转为最简单的二值图像。
4、像素处理操作
4.1 读取像素
4.2 修改像素
4.3 使用python中的numpy修改像素点
4.3.1 读取像素
4.3.2 修改像素
import cv2
import numpy as np
i=cv2.imread('path',cv2.imread_unchanged)
print(i.item(100,100))
i.itemset((100,100),255)
print(i,item(100,100))
通过这段代码我们就可以看得出来像素的更改。
对于彩色图像也是一样。
5、获取图像属性
5.1 形状
shape可以获取图像的形状,返回值包含行数、列数通道数的元组。
灰度图像返回行数列数
彩色图像返回行数、列数、通道数。
import cv2
img1=cv2.imread('灰度图像')
print(img1.shape)
5.2 像素数目
size可以获取图像的像素数目。
灰度图像:行数列数
彩色图像:行数列数*通道数
5.3 图像类型
dtype返回的是图像的数据类型
import cv2
img=cv2.imread('图像名称')
print(img.dtype)
6、图像roi
roi(region of interest)表示感兴趣区域
- 从被处理的图像中以方框、圆、椭圆或者不规则多边形等方式勾勒出需要处理的区域。
- 可以通过各种算子(operator)和函数来求roi,并进行下一步操作。
import cv2
import numpy as np
a=cv2.imread('path')
b=np.ones((101,101,3))
b=a[220:400,250:350]
a[0:101,0:101]=b
cv2.imshow('o',a)
cv2.waitkey()
cv2.destroyallwindows()
我们还可以将感兴趣的图像加入到别的图像当中。
7、通道的拆分与合并
7.1 拆分
import cv2
img=cv2.imread('图像名')
b = img[ : , : , 0 ]
g = img[ : , : , 1 ]
r = img[ : , : , 2 ]
我们在opencv中有专门拆分通道的函数:
cv2.split(img)
import cv2
import numpy as np
a=cv2.imread("image\lenacolor.png")
b,g,r=cv2.split(a)
cv2.imshow("b",b)
cv2.imshow("g",g)
cv2.imshow("r",r)
cv2.waitkey()
cv2.destroyallwindows()
7.2 合并
import cv2
import numpy as np
a=cv2.imread("image\lenacolor.png")
b,g,r=cv2.split(a)
m=cv2.merge([b,g,r])
cv2.imshow("merge",m)
cv2.waitkey()
cv2.destroyallwindows()
我们将上方的拆分图像进行merge合并就可以得到以下结果:
如果觉得博主的文章还不错或者您用得到的话,可以免费的关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!
发表评论