import cv2
import numpy as np
img=cv2.imread('/home/duan/workspace/opencv/images/roi.jpg')
px=img[100,100]
print(px)
blue=img[100,100,0]
print(blue)
## [57 63 68]
## 57
难道是
img[100,100,0]--> 57
img[100,100,1]--> 63
img[100,100,2]--> 68
???请指教
三个通道啊,分别是BGR,也就是说你的px是坐标(100,100)处BGR三个通道分别的灰阶值
我自己也遇到这个问题,我用自己的图片测试了一下这三个
img[100,100,0]--> 57
img[100,100,1]--> 63
img[100,100,2]--> 68
都是跟你一样的答案,所以我推测img[a, b, j],分别表示,a表示像素点的y值,即(距离原点的)行数;b表示像素点的x值,即(距离原点的)列数,[b, a] = [x , y]; 彩色图每个像素点由红绿蓝三通道以BGR的顺序组合而成,第三个参数位0, 1, 2,分别表示BGR的下标
PyOpenCV打开图像文件,得到是一个numpy数组。如果图像是BGR模式,这个数组就是三维的。OpenCV处理图像,有两个概念和其他模块(比如pillow)不同:
1. OpenCV的颜色通道顺序是BGR,而不是我们习惯的BGR
2. OpenCV的img[i,j],i是距离顶部的像素数,j是距离左侧的像素数,这与我们习惯的i表示水平方向的像素,j表示垂直方向的像素,正好相反。