- 获取并修改像素值
import numpy as np
import cv2
img_path = "D:/DL/AI-future/af2019-cv-training-20190312/00/00aed3c6b8f351e52ed5075603b56be1_c.jpg"
img = cv2.imread(img_path,0) #读入图像。第二个参数cv2.IMREAD_COLOR/cv2.IMREAD_GRAYSCALE
#法一:
px=img[100,100] #根据像素的行和列的坐标获取他的像素值。[B G R]
blue=img[100,100,0] #获取B值
img[100,100]=[255,255,255] #修改像素值。
#法二:更好----用img.item()获取,用img.itemset()更改
print (img.item(10,10,2))
img.itemset((10,10,2),100)
print(img.item(10,10,2))
- 获取图像属性
图像的属性包括:行,列,通道,图像数据类型,像素数目等
1)img.shape 可以获取图像的形状。他的返回值是一个包含行数,列数, 通道数的元组。(灰度图则只有行和列)
2)img.size 可以返回图像的像素数目:
3)img.dtype 返回的是图像的数据类型.
4)拆分及合并图像通道
import cv2
import numpy as np
img=cv2.imread('/home/duan/workspace/opencv/images/roi.jpg')
#法一:不推荐,cv2.split()耗时
b,g,r=cv2.split(img) #拆分
img=cv2.merge(b,g,r) #合并
#法二:numpy(常用)
b=img[:,:,0] #0取读B通道,1是G通道,2是R通道
img[:,:,2]=0 #使所有像素的红色通道值都为 0,不必先拆分再赋值。直接使用 Numpy 索引更快。
5)为图像扩边(填充) :以使用cv2.copyMakeBorder() 函数。这经常在卷积运算或 0 填充时被用到。