首先导入包,读取要处理的图片
import cv2
import numpy as np
img=cv2.imread('test.jpg')#读取图片
获取并修改像素值
可以根据像素的行和列的坐标获取他的像素值。对 BGR 图像而言,返回值为 B,G,R 的值。对灰度图像而言,会返回他的灰度值
# cv2.imshow('img',img)
# cv2.waitKey()
# cv2.destroyAllWindows()
px=img[100,100]#获取图片第100行100列的像素值
print(px)#返回的是BGR的像素值
red=img[100,100,1]#0是B,1是G,2是R
print(red)
img[100,100]=[255,255,255]#将这个位置的像素值修改成255,255,255
print(img[100,100])
上面这种方法被用来选取矩阵的一个区域,比如img[280:340,330:390]
,表示280行到340行,330到390列这一块的区域。
获取每一个像素值,也许使用 Numpy 的 array.item() 和 array.itemset() 会更好。但是返回值是标量。如果你想获得所有 B,G,R 的值,你需要使用 array.item() 分割他们。
print(img.item(100,100,2))#打印这个位置红色通道的像素值,它的返回值是标量
img.itemset((100,100,2)