如何使用 opencv-python 将 python 中的 RGB888 转换为 RGB565?
How can I use opencv-python to convert RGB888 to RGB565 in python?
我想通过opencv-python读取相机图像,并将RGB565格式的图像原始数据(字节数组)发送到设备。
下面是一些测试代码:
import cv2
cam = cv2.VideoCapture(0) # open camera
flag, image = cam.read() # read image from camera
show = cv2.resize(image, (640, 480)) # resize to 640x480
show = cv2.cvtColor(show, cv2.COLOR_BGR2RGB) # convert to RGB888
在代码 运行 之后,它在最后一行通过 cvtColor 返回 "show" ndarray (numpy),"show" ndarray 信息是:
>>> show.shape
(480, 640, 3)
>>> show.dtype
dtype('uint8')
>>> show.size
921600
我没有看到任何关于cv2的转换代码。COLOR_BGR2RGB565,还有其他支持RGB888到RGB565的功能吗?
或者有人知道如何将 ndarray RGB888 转换为 RGB565?
我认为这是正确的,但没有任何 RGB565 来测试它:
#!/usr/bin/env python3
import numpy as np
# Get some deterministic randomness and synthesize small image
np.random.seed(42)
im = np.random.randint(0,256,(1,4,3), dtype=np.uint8)
# In [67]: im
# Out[67]:
# array([[[102, 220, 225],
# [ 95, 179, 61],
# [234, 203, 92],
# [ 3, 98, 243]]], dtype=uint8)
# Make components of RGB565
R5 = (im[...,0]>>3).astype(np.uint16) << 11
G6 = (im[...,1]>>2).astype(np.uint16) << 5
B5 = (im[...,2]>>3).astype(np.uint16)
# Assemble components into RGB565 uint16 image
RGB565 = R5 | G6 | B5
# Produces this:
# array([[26364, 23943, 61003, 798]], dtype=uint16)
或者,您可以删除 cv2.cvtColor(show, cv2.COLOR_BGR2RGB)
并将索引交换为:
R5 = (im[...,2]>>3).astype(np.uint16) << 11
G6 = (im[...,1]>>2).astype(np.uint16) << 5
B5 = (im[...,0]>>3).astype(np.uint16)
我想通过opencv-python读取相机图像,并将RGB565格式的图像原始数据(字节数组)发送到设备。 下面是一些测试代码:
import cv2
cam = cv2.VideoCapture(0) # open camera
flag, image = cam.read() # read image from camera
show = cv2.resize(image, (640, 480)) # resize to 640x480
show = cv2.cvtColor(show, cv2.COLOR_BGR2RGB) # convert to RGB888
在代码 运行 之后,它在最后一行通过 cvtColor 返回 "show" ndarray (numpy),"show" ndarray 信息是:
>>> show.shape
(480, 640, 3)
>>> show.dtype
dtype('uint8')
>>> show.size
921600
我没有看到任何关于cv2的转换代码。COLOR_BGR2RGB565,还有其他支持RGB888到RGB565的功能吗?
或者有人知道如何将 ndarray RGB888 转换为 RGB565?
我认为这是正确的,但没有任何 RGB565 来测试它:
#!/usr/bin/env python3
import numpy as np
# Get some deterministic randomness and synthesize small image
np.random.seed(42)
im = np.random.randint(0,256,(1,4,3), dtype=np.uint8)
# In [67]: im
# Out[67]:
# array([[[102, 220, 225],
# [ 95, 179, 61],
# [234, 203, 92],
# [ 3, 98, 243]]], dtype=uint8)
# Make components of RGB565
R5 = (im[...,0]>>3).astype(np.uint16) << 11
G6 = (im[...,1]>>2).astype(np.uint16) << 5
B5 = (im[...,2]>>3).astype(np.uint16)
# Assemble components into RGB565 uint16 image
RGB565 = R5 | G6 | B5
# Produces this:
# array([[26364, 23943, 61003, 798]], dtype=uint16)
或者,您可以删除 cv2.cvtColor(show, cv2.COLOR_BGR2RGB)
并将索引交换为:
R5 = (im[...,2]>>3).astype(np.uint16) << 11
G6 = (im[...,1]>>2).astype(np.uint16) << 5
B5 = (im[...,0]>>3).astype(np.uint16)