欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-14 11:12:15
...

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

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

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