一、图像的基本介绍
首先我们要了解图像的构成,图像是由像素构成的,图像里的任何一个点都是一个像素
左边的图像看上去比较模糊,右上角的比较清晰一点,但是他们都是由一系列点组成的
不同在于左边的像素要低一些,而右边的像素要高一点
我们平常所说的像素其实就是构成图像的点的多少,即像素的数量,像素的大小等于行像素乘以列像素
比如像素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()
显示一下结果,前后图片对比一下我们就能看到修改后的效果了