opencv简单的图像处理--新手入门(2)

 

一、图像的基本介绍

首先我们要了解图像的构成,图像是由像素构成的,图像里的任何一个点都是一个像素

左边的图像看上去比较模糊,右上角的比较清晰一点,但是他们都是由一系列点组成的

不同在于左边的像素要低一些,而右边的像素要高一点

我们平常所说的像素其实就是构成图像的点的多少,即像素的数量,像素的大小等于行像素乘以列像素

比如像素5000W的要比500W像素要清晰

二、图像的分类

二值图像:任何一点非黑即白,只有两个值(0,1)

灰度图像:除了黑白还有灰色,把灰度分成256中不同的颜色,即有256个值,看起来会更细腻(0-255)

RGB图像:即彩色图像(red\green\blue)

简单介绍下

比如我们随便抓取二值图像的某一个点,得到其像素,就是上图右边的形式,任何一个点都是由0或者1构成

对于灰度图像,随便抓取图像的某一个点,得到其像素,就是上图右边的形式,任何一个点都是由0到255范围之间的一个数字构成

对于彩色图像,也就是我们最常见的RGB图像,是由RGB三种三原色构成,所有颜色都可以按照不同比例的RGB进行调和得出,每种颜色的大小都是在0-255范围之内。

对于彩色图像,随便抓取图像的某一个点,得到其像素,就是上图右边的形式,任何一个点都是由三种颜色组成,每种颜色的取值0到255范围之间的一个数字构成

即彩色图像的任何一个点是由三个值构成,来进行调和的。

PS:这里要注意的问题是在opencv里面对像素取值时,像素的顺序是BGR

三、读取像素

先看一段代码

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",0)
img2=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",1)
print("img1的像素为:",img1[100,100])
print("img2的像素为:",img2[100,100])

上一节我们说过imread函数,第二个参数如果是0那么读取的就是灰度图像,如果是1则为彩色图像

img1为一个灰度图像,而img2是一个彩色图像,我们看下输出结果

runfile('/Users/admin/.spyder-py3/temp.py', wdir='/Users/admin/.spyder-py3')
img1的像素为: 22
img2的像素为: [10 20 30]

四、修改像素

修改像素比较简单,采取直接赋值的方式

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",0)
print("img1的像素为:",img1[100,100])
img1[100,100]=100
print("img1的像素为:",img1[100,100])

runfile('/Users/admin/.spyder-py3/temp.py', wdir='/Users/admin/.spyder-py3')
img1的像素为: 22
img1的像素为: 100

彩色图像也是一样

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",1)
print("img1的像素为:",img1[100,100])
img1[100,100]=[100,100,100]
print("img1的像素为:",img1[100,100])

 runfile('/Users/admin/.spyder-py3/temp.py', wdir='/Users/admin/.spyder-py3')
img1的像素为: [10 20 30]
img1的像素为: [100 100 100]

当然我们也可以批量修改一个区域

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",1)
cv2.imshow("original",img1)
img1[100:150,100:150]=[100,100,100]
cv2.imshow("result",img1)
cv2.waitKey()
cv2.destroyAllWindows() 

显示一下结果,前后图片对比一下我们就能看到修改后的效果了

猜你喜欢

转载自blog.csdn.net/Andy_shenzl/article/details/86351771