opencvはフリーの画像処理ライブラリで使い勝手がよいのですが、画像ファイルを読み込むimreadとimwriteは注意が必要です。

pathlibに対応していない

pathlibはファイルのディレクトリやパスをオブジェクト指向的に扱うことの出来る標準のバッケージで、python3.6からサポートされています。

しかし、opencvの引数にこれを渡してもだめです。 Noneが返ります。

strとして渡す必要があります。

パスが間違っていても例外発生しない

Noneが返ってきます。  

モノクロ画像を読み込んでもRGBの3チャンネルになる

RGBすべての値が同じnumpyが返ってきます。 1チャンネルのデータが欲しいときは引数にcv2.IMREAD_GRAYSCALEを設定する必要があります。

img_gray = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

日本語パスng

日本語pathに対応してません。