opencv python 2 基本操作
读取并修改像素值
import cv2
img = cv2.imread('a.jpg')
px = img[10, 10]
print(px)
输出结果为
[39 118 181]
为该像素点的BRG像素值。
opencv读取彩色图像的像素顺序为BGR而非RGB。
也可输出单个通道的值:
px = img[10, 10, 0]
print(px)
输出结果为
39
可通过相同的方式修改像素值:
img[10, 10] = [255, 255, 255]
也可使用numpy中的array.item()和array.itemset()来操作像素:
import cv2
import numpy
img = cv2.imread('a.jpg')
print(img.item(10, 10, 2))
img.itemset((10, 10, 2), 100)
print(img.item(10, 10, 2))
输出结果为
181
100
获取图像属性
print(img.shape)
print(img.size)
print(img.dtype)
输出结果为
(158, 210, 3)
99540
uint8
分别对应图像的尺寸(包括通道数)、像素值个数、数据类型。
区域选择
可通过这种方式复制一个区域的图像:
import cv2
img = cv2.imread('a.jpg')
egg = img[60: 150, 0: 100]
img[60: 150, 100: 200] = egg
cv2.imshow('egg', img)
cv2.waitKey()
通道分割
当需要分割和合并BGR通道时可使用cv2.split()和cv2.merge():
b, g, r = cv2.split(img)
img = cv2.merge((b, g, r))
或:
b = img[:, :, 0]
也可使用这种方式为一个通道所有像素赋值:
img[:, :, 2] = 0