如何使用Python中的opencv访问图像的B、G、R?

如何使用Python中的opencv访问图像的B、G、R?,python,opencv,rgb,pixel,Python,Opencv,Rgb,Pixel,我想访问我的图像的所有R,G,B通道,我写了一些代码,但它只给我一个像素的R,G,B,即使我做了一个附加 我是Python初学者,你能帮我吗 代码如下: #coding: utf8 import numpy as np import cv2 from imageio import imread imgcolor = imread("/home/PATH/bougieHaut3.jpg") rows,cols,rgb = imgcolor.shape for i in range(rows):

我想访问我的图像的所有R,G,B通道,我写了一些代码,但它只给我一个像素的R,G,B,即使我做了一个附加

我是Python初学者,你能帮我吗

代码如下:

#coding: utf8
import numpy as np
import cv2
from imageio import imread

imgcolor = imread("/home/PATH/bougieHaut3.jpg")
rows,cols,rgb = imgcolor.shape
for i in range(rows):
    for j in range (cols):
        blue = imgcolor[i,j,0]
        B=[]
        B.append(blue)
        green = imgcolor[i,j,1]
        G=[]
        G.append(green)
        red = imgcolor[i,j,2]
        R=[]
        R.append(red)
print(B,G,R)

非常感谢你的帮助:)

您正在为每个像素重新创建R/G/B列表,因此它们将只包含一个条目

试一试

将numpy导入为np
进口cv2
从imageio导入imread
imgcolor=imread(“/home/PATH/bougieHaut3.jpg”)
行、列、rgb=imgcolor.shape
R=[]
G=[]
B=[]
对于范围内的i(行):
对于范围内的j(cols):
B.append(imgcolor[i,j,0])
G.append(imgcolor[i,j,1])
R.append(imgcolor[i,j,2])
打印(B、G、R)
编辑:使用Numpy的切片,一种更快的方法是

imgcolor=imread(“/home/PATH/bougieHaut3.jpg”)
B=imgcolor[:,:,0]。展平()
G=imgcolor[:,:,1]。展平()
R=imgcolor[:,:,2]。展平()

没有循环–如果需要,您可以使用
list()
将这些Numpy数组强制转换为列表。

问题在于您在每个循环中重新创建变量B、G和R。如果将B=[]、G=[]和R=[]移动到for loopsIn->avoid loops之前,它应该可以工作。在python->avoid loops中,使用numpy。。。。只需使用
B=imgcolor[:,:,0]
如果您只需要1D数组
B=imgcolor[:,:,0].ravel()
@sabrinamehall,不客气!我编辑了同一想法的更快版本。:)