图像处理基础
1.图像的基本表示方法
首先图像可以表示为二值图像、灰度图像、彩色图像,如下图所示。这里主要讨论二值图像、灰度图像、彩色图像的基本表示方法
- 二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素点的灰度值均为0或者255,分别代表黑色和白色。
- 灰度图像与二值图像不同,在计算机图像领域中二值图像只有黑白两种颜色,灰度图像在黑色与白色之间还有许多级的颜色深度。计算机会将灰度处理为256个灰度级,用处置区间[0-255]来表示。
- 彩色图像是指每个像素由R、G、B分量构成的图像,其中R、G、B是由不同的灰度级来描述的。在RGB色彩空间中,存在R(红色)通道、G(绿色)通道和B(蓝色)通道,共三个通道。在openCV中,通道的顺序是B—G—R。
2.像素处理 - 访问一幅二值图像,并对其像素进行访问和修改
演示代码
import cv2
img=cv2.imread('D:\study_opencv\chapter1\img.jpg',-1)
print(img) #访问图像像素
cv2.imshow('img',img)
cv2.waitKey()
cv2.destroyAllWindows()
结果展示
图像显示的是黑色图像,而访问的像素值是全零的数组
#导入模块
import cv2
#读取图像并打印像素
img=cv2.imread('D:\study_opencv\chapter1\img.jpg',-1)
print(img)
cv2.imshow('before',img)
#修改部分区域的像素值
img[100:300,100:300]=255
print(img)
cv2.imshow('now',img)
cv2.waitKey()
cv2.destroyAllWindows()
结果展示
在原始图像的100行到300行,100列到300列的区域,当像素值改为255时,这一部分的图像变为了白色
- 灰度图像的像素值的访问和修改和二值图像时一样的;不同的是,打印出来的像素值不再仅有0或255这两个值,其值的范围在[0-255]之间
- 对彩色图像的像素点访问和二值图像、灰度图像不同。RGB模式的彩色图像在读入openCV内进行处理时,会按照行方向依次读取该RGB图像的B通道、G通道、R通道的像素点
演示代码
#导入模块
import cv2
#读取图像并打印像素
img1=cv2.imread('D:\study_opencv\chapter1\lena.jpg',-1)
img2=cv2.imread('D:\study_opencv\chapter1\img.jpg',-1)
img3=cv2.imread('D:\study_opencv\chapter1\lenagray.jpg',-1)
#分别访问彩色图像、二值图像、灰度图像一点的像素值
print(f'彩色图像某一点的像素值为:{img1[100,100]}')
print(f'二值图像某一点的像素值为:{img2[100,100]}')
print(f'灰度图像某一点的像素值为:{img3[100,100]}')
#依次访问彩色图像在B通道、G通道、R通道的像素值
print(img1[100,100,0])
print(img1[100,100,1])
print(img1[100,100,2])
结果展示: