概要
最近iTermを使い始めました。
画像をターミナル上で表示できるの便利ですよね。
それでipython上でopencvで画像処理してたんですけど、処理した画像をターミナル上で表示できたらいいなーっと思ったんでメモ
環境
- macOS 10.12.6
- iTerm2 3.1.5
- Python 3.6.0
- opencv-python 3.4.0.12
- ipython 6.1.0
前提
imgcatを公式から落として、path通して実行できるようにしておきます。
実装
ドキュメントによれば、subprocess.runのinput引数にbyte sequenceを入れるとstdinに渡されるみたいなんで、imageのbytesをstdinでimgcatで渡してあげます
import cv2
import subprocess
def imgprint(image, format='.png'):
_, buf = cv2.imencode(format, image)
subprocess.run('imgcat', input=buf.tobytes())

できました!
おわりに
地味に初投稿記事でした🤔(めっちゃ緊張した、、、)
とりあえず知識アウトプットする癖つけたい