学习笔记,看的某宝的一个视频学习的
读取像素
返回值=图(位置参数)
灰度图读取像素
灰度度只有两维
d=img[78,155]
print(d)
彩色图读取像素
彩色图 有三个通道。
注意opencv读取的是BGR,非RGB
blue=img[78,155,0]
green=img[78,150.1]
red=img[78,150,2]
如果没有指定通道
打印出的p有三个值,BGR
p=img[78,150]
修改像素
灰度图修改像素
直接赋值
img[78,150]=255
彩色图修改像素
可以分通道赋值
img[78,150,0]=255
img[78,150,1]=255
img[78,150,2]=255
可以直接赋值
img[78,150]=[255,255,255]
算例
灰度图
import cv2
img=cv2.imread('lena256.bmp',flags=cv2.IMREAD_UNCHANGED)#cv2.IMREAD_UNCHANGED 未改变
p=img[100,100]#读取像素
print(p)
img[100,100]=255
print(img[100,100])
结果:
可以发现第100行,100列像素有73变到255
彩色图修改
修改一个通道
import cv2
i=cv2.imread("e:\\lesson\\image\\lenacolor.png",cv2.IMREAD_UNCHANGED)
#请确保在指定目录下有彩色图像文件
print(i[100,100])
i[100,100,0]=255
print(i[100,100])
同时修改三个通道
import cv2
i=cv2.imread("lenacolor.png",cv2.IMREAD_UNCHANGED)
#请确保在指定目录下有彩色图像文件
#同时更改三个通道
print(i[100,100])
i[100,100]=[255,255,255]
print(i[100,100])
修改一个区域
import cv2
img=cv2.imread('lenacolor.png',flags=cv2.IMREAD_UNCHANGED)#cv2.IMREAD_UNCHANGED 未改变
cv2.imshow('image',img)#原图
#修改一个区域像素
img[100:150,100:150]=[0,0,255]
cv2.imshow("newimage",img)#新图
cv2.waitKey(0)
cv2.destroyAllWindows()
numpy读取修改像素
读取像素
返回值=图像.item(位置参数)
item:数组的指定元素作为适当的Python标量的副本
灰度图:
p=img.item(88,150)
彩色图
print(i.item(100,100,0))#blue
print(i.item(100,100,1))#green
print(i.item(100,100,2))#red
修改像素
图像名.itemset(位置,新值)
灰度图:
i.itemset((100,100),255)
彩色图:
i.itemset((100,100,0),255)
i.itemset((100,100,1),255)
i.itemset((100,100,1),255)
算例
import cv2
import numpy as np
i=cv2.imread('lenacolor.png',flags=cv2.IMREAD_UNCHANGED)#cv2.IMREAD_UNCHANGED 未改变
print(i.item(150, 120, 0))#读取原始像素
i.itemset((150, 120, 0),255)#修改
print(i.item(150, 120, 0))#修改之后像素
结果:
电气专业的计算机小白,写博文不容易,如果你觉得本文不错,点个赞支持下。谢谢