OpenCV + Numpy库读取与修改图像的像素值 | 您所在的位置:网站首页 › 如何更改图片像素点 › OpenCV + Numpy库读取与修改图像的像素值 |
1 传统方法读取与修改图像的像素值
1.1 读取图像的像素值
(1)读取灰度图像
例如: img = cv2.imread(“lena1.tiff”, cv2.IMREAD_UNCHANGED) #读取图片 p = img[100, 200] #获取图像的灰度值 print§ #打印图像的灰度值 代码如下所示: import cv2 #读取图片 img = cv2.imread("lena1.tiff", cv2.IMREAD_UNCHANGED) #灰度图像 p = img[100, 200] print(p) #显示图像 cv2.imshow("Demo", img) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows()代码如下: import cv2 #读取图片 img = cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) #BGR图像 #方法1 b = img[100, 200, 0] print(b) g = img[100, 200, 1] print(g) r = img[100, 200, 2] print(r) print('---------------') #方法2 bgr = img[100, 200] print(bgr) #显示图像 cv2.imshow("Demo", img) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows()运行结果如下图所示: RGB图像可以通过位置参数直接访问像素值并进行修改. 代码如下所示: # -*- coding:utf-8 -*- import cv2 #读取图片 img = cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) #BGR图像 #方法1 b = img[100, 200, 0] print(b) g = img[100, 200, 1] print(g) r = img[100, 200, 2] print(r) print('---------------') img[100, 200, 0]=255 img[100, 200, 1]=255 img[100, 200, 2]=255 b1 = img[100, 200, 0] print(b1) g1 = img[100, 200, 1] print(g1) r1 = img[100, 200, 2] print(r1) print('---------------') # #方法2 print(img[100, 200]) print('---------------') img[100, 200] = [10, 10, 10] print(img[100, 200])运行结果如下: 通过访问图像数组的位置区域实现区域像素修改; 例如: [100:200,300:400] 是访问第100到200行,300到400列的区域,再对该区域像素进行修改。 代码如下所示: -- coding:utf-8 -- import cv2 #读取图片 img = cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) #BGR图像 img[100:200, 300:400] = [255, 255, 255] #修改图像像素区域的像素值 #修改第100到200行,300到400列的区域 #显示图像 cv2.imshow("Demo", img) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows()运行结果如下: 使用Numpy的 item 函数进行像素读取,调用方式如下: 返回值 = 图像.item(位置参数) 例如:(注意需要 导入numpy) #Numpy读取像素 blue = img.item(100, 200, 0) green = img.item(100, 200, 1) red = img.item(100, 200, 2) 代码如下所示: # -*- coding:utf-8 -*- import cv2 import numpy #读取图片 img = cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) # Numpy读取像素 blue = img.item(100, 200, 0) green = img.item(100, 200, 1) red = img.item(100, 200, 2) print(blue) print(green) print(red) #显示图像 cv2.imshow("Demo", img) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows()运行结果如下: 使用Numpy的 itemset 函数修改像素,调用方式如下: 图像.itemset(位置, 新值) 例如: img.itemset((100, 200, 0), 255) 代码如下所示: # -*- coding:utf-8 -*- import cv2 import numpy #读取图片 img = cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) #Numpy读取像素 print(img.item(100, 200, 0)) print(img.item(100, 200, 1)) print(img.item(100, 200, 2)) print('--------') #Numpy 修改像素 img.itemset((100, 200, 0), 255) img.itemset((100, 200, 1), 255) img.itemset((100, 200, 2), 255) #Numpy读取像素 print(img.item(100, 200, 0)) print(img.item(100, 200, 1)) print(img.item(100, 200, 2))运行结果如下: |
CopyRight 2018-2019 实验室设备网 版权所有 |