一、通过下标的方式对图像像素进行读取与修改
二、利用Numpy库的方式对图像像素的读取与修改
一、通过下标的方式对图像像素进行读取与修改
(1)灰度图像像素的读取与修改
print(image[100,100]) #访问图像image的第100行第100列的像素。【例1】
image[100,100]=255 #修改图像image的第100行第100列的像素。【例1】
(2)彩色图像像素的读取与修改
print(image[100,100]) #读取第100行100列像素点的值。[ 78 68 178]。结果有三个值,因为是BGR三通道的图像。【例2】
print(image[100,100,0]) #78.读取第100行100列像素点的,B通道的值。【例2】
image[100,100] = [255,255,255] #修改第100行100列像素点的值。【例2】
image[100,100,2] = 0 #修改第100行100列像素点的,R通道的值。【例2】
image[50:100,50:100] =[255,0,0] #修改一个区域为绿色。【例2】
例1:
'''
灰度图像像素读取和修改
'''
import cv2
image = cv2.imread("image\\lena256.bmp", cv2.IMREAD_UNCHANGED)
p = image[100, 100] #读取像素的值
print(p) #73
image[100,100] = 255 #修改像素的值
print(p) #73。p还是73.
p = image[100,100]
print(p) #255
|
例2:
'''
彩色图像像素读取和修改
'''
import cv2
image = cv2.imread("image\\lenacolor.png", cv2.IMREAD_UNCHANGED)
#1:读取一个像素点的值
print(image[100,100]) #读取第100行100列像素点的值。[ 78 68 178]。结果有三个值,因为是BGR三通道的图像。
#2:读取一个像素点某个通道的值
b = image[100,100,0] #78.读取第100行100列像素点的,B通道的值。
print(b)
g = image[100,100,1] #68.读取第100行100列像素点的,G通道的值。
print(g)
r = image[100,100,2] #178.读取第100行100列像素点的,R通道的值。
print(r)
#3:修改一个像素点的值
image[100,100] = [255,255,255] #修改第100行100列像素点的值。
print(image[100,100,2]) #255.读取第100行100列像素点的,R通道的值。
#4.修改一个像素点某个通道的值
image[100,100,2] = 0 #修改第100行100列像素点的,R通道的值。
print(image[100,100]) #[255 255 0]
#5.修改很多个像素点的值
image[50:100,50:100] =[255,0,0] #修改一个区域为绿色
cv2.imshow("result",image)
cv2.waitKey()
cv2.destroyAllWindows()
|
结果:

二、利用Numpy库的方式对图像像素的读取与修改
numpy.array提供了item()和itemset()函数来访问和修改像素值。比直接使用索引要快得多。
(1)灰度图像像素的读取与修改
print(image.item(100,100)) #访问第100行100列的像素值。【例1】
image.itemset((100,100),255) #把第100行100列像素点设成255。【例1】
(2)彩色图像像素的读取与修改
print(image.item(100,100,0) #输出image第100行100列的第0个通道的值。【例2】。注意必须要指定通道值,不能写image(100,100)
image.itemset((100,100,0),255) #把第100行100列的像素的0通道的值改为255。【例2】
例1:
'''
灰度图像像素读取和修改(使用Numpy库)
'''
import cv2
import numpy as np
image = cv2.imread("image\\lena256.bmp",cv2.IMREAD_UNCHANGED)
print(image.item(100,100)) #73.读取第100行100列的像素值
image.itemset((100,100),255) #把第100行100列像素点设成255。
print(image.item(100,100)) #255.
|
例2:
'''
彩色图像像素读取和修改(使用Numpy库)
'''
import cv2
import numpy as np
image = cv2.imread("image\\lenacolor.png",cv2.IMREAD_UNCHANGED)
#print(image.item(100,100)) #这样写是错误的。
print(image.item(100,100,0)) #78.输出image第100行100列的第0个通道的值
image.itemset((100,100,0),255)
print(image.item(100,100,0)) #255.
|
|