如何使用OpenCV、Python以numpy数组的形式获取图像的RGB值

2024-05-14 16:41:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用OpenCV读取图像的RGB值,但当我读取如下图像时,有时它不会返回准确的值

    import cv2
    img = cv2.imread('camel.jpeg')

比如说

为了这张照片( camel.jpg )一切都是正确的,但是对于这张图片(result.jpg),它返回每个像素255。 但如果尝试读取特定像素,我可以达到该像素的RGB值。我尝试使用for循环,但结果不正确,它再次为每个像素返回255。我该怎么办


Tags: 图像importimgfor图片rgb像素result
2条回答

我在Python/OpenCV中的camel图像上这样做是为了得到两个像素。通道值不仅仅是0和255

import cv2
import numpy as np

# load image and get dimensions
img = cv2.imread("camel.jpg")
hh, ww = img.shape[:2]

# get pixel at x=0,y=0
px1 = img[0:1, 0:1]

# get pixel at center of image
hh2 = hh//2
ww2 = ww//2
px2 = img[hh2:hh2+1, ww2:ww2+1]

print(px1)
print(px2)

结果:

[[[0 0 0]]]
[[[129   0 193]]]

但是您应该能够只print(img)或使用Numpy裁剪区域并打印它

也许您的camel.jpeg图像有问题,但在保存和发布时会得到修复。试着上传你发布的文件,看看是否有同样的问题

我用枕头做这个,效果非常好

from PIL import Image
import numpy as np

img = Image.open('camel.jpeg')
img_array = np.array(img)

print(img_array.shape)
print(img_array)

结果

(1477, 1200, 3)

[[[105 159 206]
  [106 160 207]
  [106 160 207]
  ...
  [215 215 217]
  [215 215 217]
  [216 216 218]]

 [[105 159 206]
  [106 160 207]
  [106 160 207]
   ...

它工作得很好,可以说img_array的形状也与camel.jpeg的分辨率相匹配

相关问题 更多 >

    热门问题