- 访问像素值并修改它们
- 访问图片属性
- 设置ROI
- 分割和合并图片
基本上本节所有的操作都是和Numpy相关的而不是OpenCV
访问和修改像素值
让我们加载一张彩色图片:
import cv2
import numpy as np
img = cv2.imread('messi5.jpg')
你可以通过行和列坐标访问一个像素值。对于BGR图片,它会返回一个蓝,绿,红值的数组。对于灰度图片,只会返回对应的深度。
px = img[100,100]
print px
# accessing only blue pixel
blue = img[100,100,0] #第三个参数 0,1,2 对应RGB三通道
print blue
157
你可以修改这个像素值:
>>>img[100,100] = [255,255,255]
>>>print img[100,100]
[255 255 255]
警告:
Numpy是一个优化的库,能够快速计算数组。所以如果一个个访问每个像素并修改它的值是很慢的,也不推荐
注意:
一般来说,都是选择数组的一片区域,比如头5行或者最后三列。对于某个像素点的访问,Numpy数组方法,array.item()
和array.itemset()
更好。但是它总是返回标量。所以如果你想访问所有的B, G, R值,你需要分开调用array.item()
更好的访问和编辑方式: