像素是图像的最小单位,每一幅图像都是由N行M列的像素组成的,其中每一个像素都存储一个像素值。
以灰度图为例,计算机通常把灰度图像的像素处理为256个灰度级别,256个灰度级别分别使用区间[0,255]中的整数数值表示。其中“0”表示纯黑色,“255”表示纯白色
图像是有许多小方块组成,通常把一个小方块称作一个像素,因此一个像素是具有一定面积的小块,而不是一个点。需要注意的是像素的形状是不固定的,大多数数况下,像素被认为是方形的,但有时也可能是圆形的或者其他形状的。
1.确定像素的BGR值
如果我们想知道某一个像素点的值,此时我们就需要先确定该像素点的位置,然后再查看它的值
(1.1)如果确定某个像素的位置
我们可以使用windows自带的画图工具打开图像,以此来查看图像中某一个像素点的位置
(1.2)查看[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3MGYor9M-1676597842631)(C:\Users\hanhan\Desktop\模型学习\opencv–pil\opencv\03像素的操作\像素操作.assets\image-20221130162314384.png)]查看某个像素点对应的BGR值
import cv2
image = cv2.imread("C:/Users/hanhan/Desktop/image/1.jpg",1)
px =image[235,234] #查看(235,234)位置像素的RGB值
print(px)
输出结果是[233,235,245]
如何理解上面的RGB输出结果?
三基色:人眼能够感知红色,绿色和蓝色三种不同的颜色,因此把这三种颜色称作三基色。如果将这三种颜色以不同的比例进行混合,人眼就能够感知到丰富多彩的颜色。
那么对于计算机是如何对这些颜色进行编码的呢?
答案就是利用色彩空间,也就是色彩空间是计算机对颜色进行编码的模型。
以较为常用的RGB色彩空间为例,在RGB色彩空间中,存在三个通道即R通道,G通道,B通道,其中R通道是红色通道,G通道是绿色通道,B通道是蓝色通道,并且每个色彩通道都是在区间[0,255]内取值。
这样,计算机将利用三个色彩通道的不同组合来表示不同的颜色
我们常常使用功能RGB的顺序来表示色彩空间,但是在opencv中则使用BGR顺序来表示色彩空间,
即【233,235,245】
233:是蓝色通道
235:是绿色通道
245:是红色通道
(1.3)如何查看每个通道的值
import cv2
image = cv2.imread("C:/Users/hanhan/Desktop/image/1.jpg",1)
px =image[235,234,0] #查看(235,234)位置的像素的B通道值
px =image[235,234,1] #查看(235,234)位置的像素的G通道值
px =image[235,234,2] #查看(235,234)位置的像素的R通道值
其实跟索引差不多
print(px)
2.修改像素的BGR值
(2.1) 修改单个像素点的BGR值
前面我们已经获取像素(235,234)位置的像素值为【233,235,245】,现在我们把像素值全部变成【255,255,255】
import cv2 image = cv2.imread("C:/Users/hanhan/Desktop/image/1.jpg",1) px =image[235,234] #查看(235,234)位置的像素RGB值 px = [255,255,255] #s使用同一个px变量,进行修改 print(px)
对于BGR色彩空间的图像,当每个像素的BGR的三个数值相等时,就可以得到灰度图像。其中B=G=R=0为纯黑色。B=G=R=255为纯白