opencv学习笔记3:像素处理

学习笔记,看的某宝的一个视频学习的

读取像素

返回值=图(位置参数)

灰度图读取像素

灰度度只有两维

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,1500]=255
img[78,1501]=255
img[78,1502]=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
opencv学习笔记3:像素处理_第1张图片
彩色图修改

修改一个通道

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))#修改之后像素

结果:
opencv学习笔记3:像素处理_第2张图片

电气专业的计算机小白,写博文不容易,如果你觉得本文不错,点个赞支持下。谢谢

你可能感兴趣的:(CV,opencv,计算机视觉,python)