15

我正在将图像加载到 python 中,例如

image = cv2.imread("new_image.jpg")

我如何访问 RGB 值image

4

6 回答 6

13

你可以做

image[y, x, c]

或等效地image[y][x][c]

它将返回x,y,c坐标中像素的值。请注意,索引从 开始0。因此,如果您想访问第三个 BGR(注意:不是 RGB)组件,您必须执行所需的行和列的位置和image[y, x, 2]yx

此外,您可以通过键入来获取给定对象在 Python 中可用的方法dir(<variable>)。例如,加载后image,运行dir(image),你会得到一些有用的命令:

“cumprod”、“cumsum”、“数据”、“对角线”、“点”、“dtype”、“转储”、“转储”、“填充”、
'flags','flat','flatten','getfield','imag','item','itemset','itemsize',
“最大”、“平均”、“最小”、...

用法:image.mean()

于 2012-08-29T22:51:56.850 回答
9

使用opencv在Python中获取像素的BGR颜色值

import cv2
image = cv2.imread("sample.jpg")
color = int(image[300, 300])
# if image type is b g r, then b g r value will be displayed.
# if image is gray then color intensity will be displayed.
print color

输出: [73 89 102]

于 2016-07-05T11:19:27.737 回答
4

此代码将打印像素 300、300 的红色、绿色和蓝色值:

img1 = cv2.imread('Image.png', cv2.IMREAD_UNCHANGED)
b,g,r = (img1[300, 300])
print (r)
print (g)
print (b)
于 2020-05-02T17:29:57.420 回答
0

它对我很有效:

import cv2 
import numpy as np  

cap = cv2.imread('/home/PATH/TO/IMAGE/IMG_0835.jpg')
#You're free to do a resize or not, just for the example
cap = cv2.resize(cap, (340,480))
for x in range (0,340,1):
    for y in range(0,480,1):
        color = cap[y,x]
        print color`
于 2019-06-11T08:42:47.317 回答
0

我认为获取图像 RGB 的最简单方法是使用cv2.imshow("windowName",image). 图像会以窗口形式显示,小信息栏还会在图像下方显示坐标(x,y)和RGB。喜欢这张照片。您可以使用鼠标查看您想要的任何像素的 RGB。

代码示例:

import cv2

image = cv2.imread("new_image.jpg")
try:
    cv2.imshow("windowName",image)
    cv2.waitKey(0)
except:
    print("No this image")
于 2021-03-08T17:13:55.950 回答
-3

您可以使用 numpy 更好地将图像转换为 numpy 数组并转置矩阵 [RGB] 将是 [BGR] 反之亦然

于 2019-09-05T10:57:08.940 回答