OpenCV读取到的图片内容是一个数组
这就意味着我们可以通过这个数组来操作图片的每个像素点来达到修改图片的目的
我们可以把图片的每个像素点的颜色进行反色处理
然后我们就得到了一幅类似底片的反色照片
根据这个思路结合先前获取图片信息的章节内容(查看图片的信息)
只需要遍历图片每一个像素点的每个通道再处理就OK了
上代码
import cv2 as cv
def access_pixels(image):
print(image.shape)
shape = image.shape
height = shape[0]
width = shape[1]
channels = shape[2]
print("Width= %s, Height= %s, Channels= %s" % (width, height, channels))
for row in range(height):
for col in range(width):
for cn in range(channels):
"""获取image单个像素点的某个通道,顺序是BGR"""
pv = image[row, col, cn]
"""255-原本的颜色就变成了反色"""
image[row, col, cn] = 255 - pv
cv.imshow("imshow_inverse", image)
src = cv.imread("image/bayer.png")
cv.imshow("imshow", src)
access_pixels(src)
cv.waitKey(0)
shape就是图