CV2.IMENCODE替代方案/NUMPY转JPG/PHTHON编码JPG/树莓派LIBJPEG-TURBO安装

博客探讨了使用OpenCV进行JPEG编码速度较慢的问题,并介绍了替代库LIBJPEG-TURBO的安装与测试。尽管在720p图片编码时,LIBJPEG-TURBO比OpenCV略有优势,但速度提升不明显,两者在树莓派上的性能相近。测试结果显示,使用PyTurboJPEG库,720p编码能达到约10fps。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编码速度慢?

对于jpeg编码,我们经常是这么用的

#img_q 代表质量
img_param = [int(cv2.IMWRITE_JPEG_QUALITY), img_q]
_, img_encode = cv2.imencode('.jpg', img, img_param)

这个缺点是速度慢,用来做图传显然是不行的,经过测试720p在树莓zero上也只能跑到6fps上下。
听说LIBJPEG-TURBO在处理大文件速度较快,于是试了一下。

安装 LIBJPEG-TURBO

wget https://sourceforge.net/projects/libjpeg-turbo/files/1.5.2/libjpeg-turbo-1.5.2.tar.gz

tar -xzvf libjpeg-turbo-1.5.2.tar.gz

sudo apt install autoconf
sudo apt install nasm 
sudo apt install libtool

cd libjpeg-turbo-1.5.2
autoreconf -fiv

./configure
sudo make
sudo make install
sudo make test

测试用了python 包装库 https://github.com/lilohuang/PyTurboJPEG

测试结果

经过测试OPENCV的编码速度与LIBJPEG-TURBO在对720p图片编码时计算出来对FPS几乎没有区别,速度都不怎么快。cv2.imencode 720p 稳定8fps, TurboJPEG 720p 稳定10fps 环境树莓3,可惜没遇到能够硬编码的摄像头

pip3 install -U git+git://github.com/lilohuang/PyTurboJPEG.git
import cv2
import time
from turbojpeg import TurboJPEG, TJPF_GRAY, TJSAMP_GRAY, TJFLAG_PROGRESSIVE,TJFLAG_FASTUPSAMPLE,TJFLAG_FASTDCT,TJFLAG_BOTTOMUP,TJFLAG_ACCURATEDCT,TJFLAG_STOPONWARNING

cap = cv2.VideoCapture(0)

# cap.set(3, 800)
# cap.set(4, 600)

cap.set(3, 1280)
cap.set(4, 720)

jpeg = TurboJPEG('/home/pi/libjpeg-turbo-1.5.2/.libs/libturbojpeg.so')

fps = 0.0

while(cap.isOpened()):

    t1 = time.time()
    ret, frame = cap.read()
    
    encode_params = [
        cv2.IMWRITE_JPEG_QUALITY,
        10,
    ]
    data=cv2.imencode("*.jpg", frame, encode_params)[1].tobytes()
    # data=jpeg.encode(frame, quality=10, flags=TJFLAG_FASTDCT)
    print(len(data))

    fps  = ( fps + (1./(time.time()-t1)) ) / 2

    print("fps= %.2f" % (fps))
cap.release()

800*600 几乎就一样了,速度上没有区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值