OpenCV彩色图像像素读取与表示

RGB模式的彩色图像在读入OpenCV内进行处理时,会依次读取该RGB图像的B通道、G通道、R通道。
可使用表达式访问数组内的值。如:img[0,0,0]表示访问图像img的B通道内的第1行第1列上的像素点。
img[0,0,0]中:
- 第1个索引表示第几行
- 第2个索引表示第几列
- 第3个索引表示第几个颜色通道
注意:索引都是从0开始,0表示第1个。
举例如:

  • img[0,0]:表示访问图像img第1行第1列像素点的BGR值。得到的数值形如 [?,?,?]
  • img[0,0,1]:表示访问图像img第1行第1列第2个通道即G通道的像素值。

代码如下:

import numpy as np
import cv2
# ---使用np.zeros()生成4行3列的3通道三维数组,初始像素值全为0
blue = np.zeros((4, 3, 3), dtype=np.uint8)
#---将blue数组的第2行第1列第3个通道(即R通道)的像素值设为255
blue[1, 0, 2] = 255
print("blue=\n", blue)
cv2.imshow("blue", blue)
cv2.waitKey()
cv2.destroyAllWindows()

控制台输出如下:
blue=
[
[ [ 0 0 0 ] #第1行第1列的BGR值[0 0 0 ]
[ 0 0 0 ] #第1行第2列的BGR值[0 0 0 ]
[ 0 0 0 ] ] #第1行结束

[ [ 0 0 255 ] #第2行第1列的BGR值[0 0 255 ]
[ 0 0 0 ]
[ 0 0 0 ] ] #第2行结束

[ [ 0 0 0]
[ 0 0 0]
[ 0 0 0] ] #第3行结束

[ [ 0 0 0]
[ 0 0 0]
[ 0 0 0] ] #第4行结束
]
OpenCV彩色图像像素读取与表示_第1张图片
我以前对于彩色图像像素三维表示一直没明白,我们最常见到的数组里元素是一个数值,而这里数组里的元素仍是一个数组[?,?,?]。把[?,?,?]看作一个整体就好理解了。
在这里插入图片描述
认真看这个小图的话,可以看到黑色图像左上角有一个红点,这就是我们之前代码里设置的blue[1, 0, 2] = 255的效果。索引2表示第3个通道,即R通道,这一点的像素值为[0,0,255],所以这点显示为红色。

我也是初学体验,写博客记录方便自己以后有问题查看,要是有不对的地方,还请多包涵评论交流指正,谢谢。

声明:记录总结是对李立宗老师写的《OpenCV轻松入门面向Python》这本书学习的记录总结。

你可能感兴趣的:(opencv,计算机视觉,图像识别,cv)