はじめに
libjpeg-turboのInstall
- 以下のinst_libjpeg-turbo_205.shを使うと簡単.
wget https://raw.githubusercontent.com/FREEWING-JP/Jetson_Convenience_Script/master/libjpeg-turbo/inst_libjpeg-turbo_205.sh chmod 777 inst_libjpeg-turbo_205.sh bash ./inst_libjpeg-turbo_205.sh
PyTurboJPEGのInstall
- python3からlibjpeg-turboを呼ぶAPI
sudo pip3 install PyTurboJPEG
PyTurboJPEGの書き方
import cv2 from turbojpeg import TurboJPEG # specifying library path explicitly # defaultでlinuxの場合は,/usr/lib64/libturbojpeg.soを指してるので指定は不要. # jpeg = TurboJPEG('/usr/lib64/libturbojpeg.so') # using default library installation jpeg = TurboJPEG() # direct rescaling 1/2 while decoding input.jpg to BGR array in_file = open('input.jpg', 'rb') # 指定倍率でリサイズ可能. 速い. # supported scaling factors are # [(2, 1), (15, 8), (7, 4), (13, 8), (3, 2), (11, 8), (5, 4), (9, 8), # (1, 1), (7, 8), (3, 4), (5, 8), (1, 2), (3, 8), (1, 4), (1, 8)] bgr_array_half = jpeg.decode(in_file.read(), scaling_factor=(1, 2)) in_file.close() cv2.imshow('bgr_array_half', bgr_array_half) cv2.waitKey(0)
- その他の書き方は以下を参照 https://pypi.org/project/PyTurboJPEG/
まとめ
- libjpeg-turboで, Jpegのdecodeを高速化できた.
- XavierNXだと, cv2.imcodeに比べて若干速い程度.(scaling_factorを上手く使うと速い)
- PythonのAPIで呼べるので便利.
参考リンク
おまけ
arm64だと使えなかった高速化ネタ
pillow-simd, accimage. Desktopで使えば便利そう.
リンク