2.3 使用numpy.array访问像素

opencv基础-06 使用numpy.array 操作图片像素值 这段代码创建了一个形状为(2, 4, 3)的NumPy数组img,其中包含了随机生成的8位无符号整数(uint8)类型的数据。这个输出展示了一个形状为(2, 4, 3)的NumPy数组,表示了两个2x4的像素块,每个像素块包含3个通道(红、绿、蓝)。每个像素值都是随机生成的介于10到99之间的整数。size=[2, 4, 3]参数定义了数组的形状为(2, 4, 3),通过观察输出结果可以发现,语句 img.itemset((3,2),255)将图像第 4 行第 3 列位置上的像素值修改为 255 了。 阅读详情

numpy.array 提供了 item()和 itemset()函数来访问和修改像素值,而且这两个函数都是经过 优化处理的,能够更大幅度地提高处理效率。在访问及修改像素点的值时,利用 numpy.array 提供的函数比直接使用索引要快得多,同时,这两个函数的可读性也更好。

1. 二值图像及灰度图像

函数 item()能够更加高效地访问图像的像素点,该函数的语法格式为:
item(行,列)
函数 itemset()可以用来修改像素值,其语法格式为:
itemset(索引值,新值)

【例 2.7】使用 Numpy 生成一个二维随机数组,用来模拟一幅灰度图像,并对其像素进行 访问、修改。

 numpy as np
img = np.random.randint(10,99,size=[5,5],dtype=np.uint8)
print("img=\n",img)
print("读取像素点img.item(3,2)=",img.item(3,2))
img.itemset((3,2),255)
print("修改后img=\n",img)
print("修改后的像素点img.item(3,2)=",img.item(3,2))

通过观察输出结果可以发现,语句 img.itemset((3,2),255)将图像第 3 行第 2 列位置上的像素值修改为 255 了

【例 2.8】生成一个灰度图像,让其中的像素值均为随机数。

import cv2
img = np.random.randint(0,255,size=[256,256],dtype=np.uint8)
cv2.imshow("demo",img)
cv2.waitKey()
cv2.destroyAllWindows()

【例 2.9】读取一幅灰度图像,并对其像素值进行访问、修改。

img = cv2.imread("/Users/zhaofeier/Desktop/lenna.bmp",0)
#! 测试数据读取、修改单个像素值
print("读取像素点img.item(3,2)=",img.item(3,2))
img.itemset((3,2),255)
print("修改后像素点img.item(3,2)=",img.item(3,2))

#! 测试修改一个区域的像素值
cv2.imshow("before",img)
for i in range(10,100):
    for j in range(80,100):
        img.itemset((i,j),255)
        
cv2.imshow("after",img)
cv2.waitKey()
cv2.destroyAllWindows()

2. 彩色图像

我们也可以使用函数 item()和函数 itemset()来访问和修改彩色图像的像素值,过程与操作度图像相似,不同之处在于需要补充通道信息。
函数 item()访问 RGB 模式图像的像素值时,其语法格式为:
item(行,列,通道)
函数 itemset()修改(设置)RGB 模式图像的像素值时,其语法格式为:
itemset(三元组索引值,新值)
需要注意,针对 RGB 图像的访问,必须同时指定行、列以及行列索引(通道),例如img.item(a,b,c)。仅仅指定行和列是不可以的。

【例 2.10】使用 Numpy 生成一个由随机数构成的三维数组,用来模拟一幅 RGB 色彩空间的彩色图像,并使用函数 item()和 itemset()来访问和修改它。

img = np.random.randint(10,99,size=[2,4,3],dtype=np.uint8)
print("img=\n",img)
print("读取像素点img[1,2,0]=",img.item(1,2,0))
print("读取像素点img[0,2,1]=",img.item(0,2,1))
print("读取像素点img[1,0,2]=",img.item(1,0,2))
img.itemset((1,2,0),255)
img.itemset((0,2,1),255)
img.itemset((1,0,2),255)
print("修改后img=\n",img)
print("修改后的像素点img[1,2,0]=",img.item(1,2,0))
print("修改后的像素点img[0,2,1]=",img.item(0,2,1))
print("修改后的像素点img[1,0,2]=",img.item(1,0,2))

【例 2.11】生成一幅彩色图像,让其中的像素值均为随机数。

img = np.random.randint(0,255,size=[256,256,3],dtype=np.uint8)
cv2.imshow("demo",img)
cv2.waitKey()
cv2.destroyAllWindows()

【例 2.12】读取一幅彩色图像,并对其像素进行访问、修改。

img = cv2.imread("/Users/zhaofeier/Desktop/lenna.bmp")
cv2.imshow("before",img)
print("访问 img.item(0,0,0)=",img.item(0,0,0)) 
print("访问 img.item(0,0,1)=",img.item(0,0,1))
print("访问 img.item(0,0,2)=",img.item(0,0,2))

for i in range(0,50):
    for j in range(0,100):
        for k in range(0,3):
            img.itemset((i,j,k),255)    #?白色

cv2.imshow("after",img)
cv2.waitKey()
cv2.destroyAllWindows()
print("修改后 img.item(0,0,0)=",img.item(0,0,0)) 
print("修改后 img.item(0,0,1)=",img.item(0,0,1)) 
print("修改后 img.item(0,0,2)=",img.item(0,0,2))
OpenCV轻松入门:面向Python【1.2】 本文介绍了使用NumPy的item()和itemset()函数高效访问和修改图像像素值的方法。对于灰度图像,通过行列索引直接操作像素;对于彩色图像,还需指定通道信息。通过多个实例演示了随机生成图像、读取修改像素值、区域像素修改等操作。在ROI处理部分,展示了区域复制、脸部提取与打码、图像间ROI复制等应用场景。这些方法优化了像素操作效率,提升了图像处理的可读性和灵活性。文中所有实例均提供完整代码和效果说明,建议读者实际运行观察彩色效果。 阅读详情

相关推荐

(SCADA)监控与数据采集系统

SCADA应用于监控和采集数据来控制工业过程软件。它通过收集和传输实时数据,帮助操作员监视和控制各种设备和过程。

软件技术的专栏 4543

Numpy图像数组

获取图像数组 当在如图像时,通过调用np.array()方法将图像转换为numpy数组对象。 from PIL import Image import numpy as np #将图像数据转化为数组保存 with Image.open('a.jpg') as im: im_data = np.array(im) #将图像数据转化为数组 im_l = im.convert('L') #将...

qq_40579095的博客 4505

SRAM故障排查实战:如何用Nano Prober定位6T存储单元的异常点

本文详细介绍了在SRAM故障排查中,如何运用Nano Prober(纳米探针)技术精准定位6T存储单元的内部异常。面对传统方法难以发现的电性参数漂移(如晶体管阈值电压偏移)或微小物理缺陷,Nano Prober能直接对单个6T单元内的晶体管进行I-V特性测量,结合失效模式分析,有效解决读写错误等疑难问题,是芯片失效分析的关键工具。

v5w6x的博客 664

Python数字图像处理1.2---彩色图像灰度化和二值化

本篇将介绍彩色图像灰度化和二值化的原理,并使用Python来实现对应算法内容。

Trent1985的专栏 1万+

微信小程序订阅消息实战:如何绕过长期订阅限制实现多次发送(附PHP代码)

本文针对微信小程序开发者无法获取长期订阅消息权限的痛点,提供了一套完整的实战解决方案。通过深入剖析一次性订阅与长期订阅的规则差异,结合巧妙的交互设计、稳健的PHP服务端发送引擎(含高并发处理与失败重试机制)以及授权池管理等高级策略,帮助开发者在合规前提下,构建高可用的消息推送系统,有效提升通知触达率与用户体验。

weixin_29008805的博客 620

实用软件工程(第2版)吕云翔编简答题部分答案(自用整理)

整理自用

m0_61217768的博客 4107

Python把二维numpy数组转变为灰度图

from PIL import Image # image_array是归一化的二维浮点数矩阵 image_array *= 255 # 变换为0-255的灰度值 im = Image.fromarray(image_array) im = im.convert('L') # 这样才能转为灰度图,如果是彩色图则改L为‘RGB’ im.save('outfile.png') ...

wulimmya的博客 2万+

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作: 软件是AWR 14版本

钢丝 2万+

python中将Numpy数组保存为图像

第一种方案可以使用scipy.misc,代码如下:import scipy.misc misc.imsave('out.jpg', image_array) 上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色。如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为:import scipy.misc misc.toimage(image_array, cm...

mtj66的博客,交流WX:SpringBreeze1104 5万+

RGB接口电容触摸屏驱动(一)模块介绍

RGB接口电容触摸屏驱动(一)模块介绍

杰克拉力船长个人博客 7876

CentOS 7 常用命令大全

CentOS中Linux命令

m0_63075763的博客 2018

Opencv+Python学习记录3:使用numpy.array 访问像素+ROI(内附代码)

Opencv+Python学习记录3: 主要内容是利用numpy对图片像素进行处理,以及感兴趣区域(ROI)的部分操作。(内附详细代码)

qq_53914247的博客 3285

Qt 国产嵌入式操作系统实现文字转语音功能(ekho库)

Qt 国产嵌入式操作系统实现文字转语音功能(TTS)_tts驱动 转文字-优快云博客在继上篇文章之后,甲方粑粑不满意使用eSpeak发出的声音太难听了,这就不得不找个替代品,声音稍微好听了一些。使用ekho开源库。Ekho(余音)是一个免费、开源的中文语音合成软件。它目前支持粤语、普通话(国语)、诏安客语、藏语、雅言(中国古代通用语)和韩语(试验中),英文则通过Festival间接实现。Ekho支持Linux、Windows和Android平台。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 2754

OpenCV学习笔记02--图像像素处理--二值图像、灰度图像、彩色图像像素的处理、numpy.array中的对应的函数

当我们读取一幅图像的时候,一般为二值图像、灰度图像、彩色图像。二值图像就是组成图像的像素非黑即白,只有两种取值,在double类型中0代表黑,1代表白。uint8的话则是0代表黑,255代表白,如果图像的像素不仅有两种颜色组成,还有白色和黑色的之间的灰色,即把白色和黑色之间分成若干段,每段代表的灰度都不同,这时表现出来的图像就是灰度图像。彩色图像则是色彩上给人的冲击是不一样,比如rgb彩色图像,由三个通道组成,每一个彩色像素值是由三个通道上的各个对应的像素值叠加而成呈现出来的颜色。

BaoITcore的博客 6420

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

基于numpy.array对图像的数据访问(一)

numpy.array类对数组的操作进行了极大的优化,它允许某些类型的批量操作,而这些操作在普通的python列表中是不可用的。这些类型的numpy.array都是opencv中特定于数组类型的操作,对于图像操作来说很方便。 import cv2 img = cv2.imread('010.jpg') img[0,0] = [255,255,255] cv2.imwrite('001.jpg',img) 上述图片是将坐标(0,0)的点转化为白色,不过这里笔者使用的图片本身不太明显也就没有加

zhaodongdz的博客 2868

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OpenCV中使用NumPy模块操作像素

例: 创建一维数组n1和n2, n1=np.array([1, 2]), n2=np.array([3, 4])。例: 创建一维数组n1和n2, n1=np.array([1, 2]), n2=np.array([3, 4])。例: 创建一维数组n1和n2, n1=np.array([1, 2]), n2=np.array([3, 4])。NumPy创建的的数组可以使用逻辑运算符进行比较运算,运算的结果是布尔值的数组,数组中的布尔值为相比较的数组在相同位置元素的比较结果。size:可选参数,随机数的尺寸。

qq_73576170的博客 1057

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用Numpy模块操作像素

编译环境:python3.11库:cv2,

Wabi_sabi_x的博客 732

OpenCV——使用numpy.array访问像素

参考文献:《OpenCV轻松入门》 二值图像及灰度图像 item()函数:能够更加高效地访问图像的像素点,语法格式 item(行, 列) itemset()函数:用来修改像素值,语法格式 itemset(索引值,新值) img = np.random.randint(10, 99, size=[5, 5], dtype=np.uint8) print(img.item(3, 2)) out:23 img.itemset((3, 2), 255) print(img.item(3, 2)) o.

紫罗兰与海棠的博客 322

opencv入门:图像处理基本操作,图像的基本表示方法, 像素处理,使用numpy.array 访问像素,感兴趣区域 ROI

计算机视觉开始,,,是不是跨的有点大。。。

AI路漫漫 947

OpenCV——使用numpy.array访问图像数据

使用numpy.array读取并修改图像数据 源代码 import cv2 import numpy as np img = cv2.imread('000.jpg') print(type(img)) print(img[150, 120, 0]) print(img.item(150, 120, 0)) print(img.shape) print(img.size) print(img...

每一个不曾起舞的日子,都是对人生的辜负。 3109

python像素处理_用python处理图片实现图像中的像素访问

这篇文章主要介绍了关于用python处理图片实现图像中的像素访问,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作。如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了。因此,通常我们加载完图片后,都是把图片转换成矩阵来进行更加复杂的操作。python中利用numpy库和s...

weixin_39719472的博客 189

使用python进行图像处理—图像标识与NumPy(3)

在Python中进行更复杂的图像处理时,我们通常需要访问和操作图像的像素数据。最常见和高效的方式是将图像数据转换为NumPy数组。NumPy是Python中用于科学计算的核心库,提供了高性能的多维数组对象和大量的数学函数。Pillow图像对象和NumPy数组之间可以方便地相互转换。

m0_71555731的博客 1342

python改变某像素值

最基础的例子,将BGR图像在(0,0)处的像素转化为白像素: 普通的python数组转换: import cv import numpy as np img=cv.imread(“mupic.png”) img[0,0]=[255,255,255] 现使用numpy.array函数来转换: 将坐标(150,120)的当前蓝色值变为255(改变特定像素的蓝色值): import cv import numpy as np img=cv.imread(“mupic.png”) print(img.item(1

一只菜猫的博客 2180

OpenCV-Python学习(4)—— OpenCV 图像对象的创建与赋值(numpy.zeros、numpy.zeros_like、numpy.ones)

在中一切图像数据皆 numpy.array;创建图像就是创建 numpy.array;OpenCV-Python 支持的常用数据类型:np.uint8、np.float32、np.int32、np.int64。

止于至善 3065
上一篇: 【机器学习实战】线性回归
下一篇: 2.4 感兴趣区域(ROI)
暮棂
博客等级 码龄8年 340粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暮棂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值