我刚开始使用OpenCv-Python。 我想看看Bayer格式的图像的像素值。使用OpenCv-Python,我编写了以下代码来显示像素值:
import numpy as np
import cv2
image = cv2.imread("bayer_small.png")
image_data = np.array(image)
print(image_data[50][50])
#Output is printed as " [ 0 0 102]
我的期望是单像素值:102
为什么会这样?由于图像仅采用拜耳格式,因此我预计每个像素只有一个组件。
据我所知,其他两个组件的输出显示为零。但我只期待拜耳格式的数据,例如:第一行的BGBGBGBG。
我的目标是实现一种算法。因此,试图一步一步做。
编辑1:是否有可以将普通图像转换为拜耳格式的内置函数?
答案 0 :(得分:3)
虽然您的图片可能包含来自拜耳矩阵的数据,但它仍然使用RGB格式来包含它。您可以假设每个像素的两个通道包含0;因此,您应该沿第三轴对整个图片应用矢量化和:
data = np.sum(image_data, axis=2)
为了规范它。
顺便说一下,您可以使用更简洁的语法访问Numpy数组中的数据:data[50, 50]
而不是data[50][50]
。