【发布时间】:2018-11-18 02:18:36
【问题描述】:
我有一个 python 列表,其中包含表示为 int32 的 PNG 图像的 RGBA 数据,该数据是从 Java 套接字服务器发送过来的。
此数据的示例输出为 numpy 数组,没有任何转换:
[[-12763847 -12763847 -12763847 ... -5590160 -12039396 -12434915]
[-12763847 -12763847 -12763847 ... -6643102 -12828909 -12830184]
[-12763847 -12763847 -12763847 ... -8419763 -13487094 -12435167]]
当然,CV2 接受 uint8 作为数据类型(显示为 int32 会显示黑屏),因此我将列表转换为带有 dtype = np.uint8 的 numpy 数组,其内容如下:
image_data = np.array(data_list, dtype = np.uint8)
此示例输出:
[[ 57 57 57 ... 112 28 29]
[ 57 57 57 ... 98 19 24]
[ 57 57 57 ... 77 10 33]]
但是,当我使用显示图像时
cv2.imshow("Image", image_data)
我得到一个显示图像的窗口,但是是灰度的;它没有颜色。
如何防止颜色被忽略?
【问题讨论】:
-
仔细查看整数。的字节将包含颜色信息。有效地摆脱其中两个只会给你蓝色通道。