OpenCVで日本語の画像ファイルを読み書きする方法


概要

OpenCVで画像ファイルを読み込む場合、imread、imwriteをよく使用するが、
imread、imwriteはASCII文字のみ使用可能なため、UNICODE文字の日本語があるとエラーになってしまう。
今回は、imread、imwriteするときに日本語ファイル名でも読み書き出来る方法を記載する。

前提条件

  • Python3.7.3
  • OpenCV 4.2

サンプルプログラム

cv2_unicode_readwrite.py

import cv2
import os
import numpy as np

def main():

    READ_FILE = "./テスト.jpg"
    WRITE_FILE = "./テスト2.jpg"

    # 読込
    f = cv2.imdecode(np.fromfile(READ_FILE, dtype=np.uint8),
                    cv2.IMREAD_UNCHANGED)

    # 64x64にリサイズを実施
    resize_face = cv2.resize(f, (64, 64))

    #保存
    is_success, im_buf_arr = cv2.imencode(".jpg", resize_face)
    im_buf_arr.tofile(WRITE_FILE)

if __name__ == "__main__":
    main()

参考ページ