JPEG数据解码
如何得到YUV420数据?
- 简单方法:用opencv进行转换
img = cv2.cvtColor(img , cv2.COLOR_BGR2YUV_I420)
- 其他方法,包括硬件解码(如nvidia jetson multimedia api )、libjpeg、ffmpeg等库。
如何得到JPEG数据?
- 可以采用读取图像后进行yuv420转换(
opencv cvtColor函数
),再利用libjpeg或硬件进行编码操作,nvidia jetson multimedia api JPEG编码 - 可以读取原始数据后 用
opencv:cv2.imencode('.jpeg' , img)[1]
编码成jpeg数据。 有博主进行python源码实现jpeg编码。img = cv2.imread("test.jpg") img_encode = cv2.imencode('.jpeg' , img)[1] jpeg_bytes = np.array(img_encode).tobytes()
- python
软件解码:
- opencv-python
nparr = np.fromstring(jpeg_bytes,np.uint8)
#解码为灰度图像,时间40ms
img_de = cv2.imdecode(nparr , cv2.IMREAD_GRAYSCALE)
#解码为BGR,时间100ms
img_de = cv2.imdecode(nparr , cv2.IMREAD_COLOR)
- tensorflow
img_tf = tf.image.decode_jpeg(jpeg_bytes) #耗时50ms
# to numpy to show