OpenCV官方教程中文版 —— 图像的基础操作
前言
目标
• 获取像素值并修改
• 获取图像的属性(信息)
• 图像的 ROI()
• 图像通道的拆分及合并
几乎所有这些操作与 Numpy 的关系都比与 OpenCV 的关系更加紧密,因此熟练 Numpy 可以帮助我们写出性能更好的代码。
一、获取并修改像素值
首先我们需要读入一幅图像
import cv2
import numpy as np
img = cv2.imread('lena512.png')
你可以根据像素的行和列的坐标获取他的像素值。对 BGR 图像而言,返回值为 B,G,R 的值。对灰度图像而言,会返回他的灰度值。
import cv2
import numpy as np
img = cv2.imread('lena512.png')
px=img[100,100] # 表示获取坐标(100, 100)处的 BGR 像素
print(px)
blue=img[100,100,0] # 表示获取坐标(100, 100)处的 Blue 像素
print(blue)
--->[ 78 68 178]
--->78
你可以以类似的方式修改像素值
import numpy as np
import cv2
img = cv2.imread('lena512.png')
img[100,100] = [255, 255, 255]
print(img[100,100])
注意:上面提到的方法被用来选取矩阵的一个区域,比如说前 5 行的后 3 列。对于获取每一个像素值,也许使用 Numpy 的 array.item() 和 array.itemset() 会更好。但是返回值是标量。如果你想获得所有 B,G,R 的值,你需要使用 array.item() 分割他们。
import cv2
import numpy as np
img = cv2.imread('lena512.png')
print img.item(10,10,2)
img.itemset((10,10,2),100)
print img.item(10,10,2