OpenCV + Numpy库读取与修改图像的像素值 您所在的位置:网站首页 如何更改图片像素点 OpenCV + Numpy库读取与修改图像的像素值

OpenCV + Numpy库读取与修改图像的像素值

2023-07-31 23:16| 来源: 网络整理| 查看: 265

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()

在这里插入图片描述

(2)读取RGB图像 # 方法1 b = img[100, 200, 0] # 注意和Matlab的区别 print(b) g = img[100, 200, 1] print(g) r = img[100, 200, 2] print(r) # 方法2 bgr = img[100, 200] print(bgr)

代码如下:

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()

运行结果如下图所示: 在这里插入图片描述

1.2 修改图像的像素值 (1)修改单个像素点的像素值

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])

运行结果如下: 在这里插入图片描述

(2)修改图像区域像素的像素值

通过访问图像数组的位置区域实现区域像素修改;

例如: [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()

运行结果如下:

在这里插入图片描述

2 使用Numpy库读取像素方法与修改图像的像素值 2.1 读取图像的像素值

使用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()

运行结果如下: 在这里插入图片描述 注:OpenCV读取图像通道是BGR,也可以转换成RGB在进行处理

2.2 修改图像的像素值

使用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 实验室设备网 版权所有