OpenCV実験python3 準備編

2019年6月22日

OpenCV(オープンソース画像解析ライブラリ)とpython3を使って、いろいろ画像変換の検証、ちょとしたシステムを作る機会、必要がありましたので、自分でも再度python3で実験してみました。

環境は Ubuntu16.04 で検証しています。

OpenCVのインストールは以下2行でOKと思います。

$ sudo pip3 install opencv-python
$ sudo pip3 install opencv-contrib-python

場合によっては画像系ライブラリとかnumpy追加が必要かもです。この辺は環境しだいで大分コマンド数がちがいますよね。。

$ sudo apt-get install python3-xlib
$ sudo pip3 install numpy

簡単な画像編集テスト

当サイトのロゴをいじってみます。ちなみにUbuntuのDesktopの画像編集ツールでありますPINTAで”北”の文字を中抜きにしただけのロゴです。。

サイトオリジナルロゴ

これに色の反転を実施してみます。コードは以下で簡単なものです。hanten.pyとでもしておきます。

色の反転、というのは各pixelのRGB表示(それぞれの色が8ビットで表示される)を0と1反転したものですね。RGB=(255,255,255)だったらRGB(0,0,0)になるってことです。255は2進数で11111111です。これが00000000になるってことですね。実際はOpenCVでは並びがBGRなので注意が若干必要かもですね。

import cv2

img = cv2.imread('logo.png')
img2 = cv2.bitwise_not(img)
cv2.imwrite('logo_hanten.png',img2)

logo.pngを開いて、RGBビット反転を実施して、logo_hanten.pngに保存する簡単なサンプルです。

$ python3 hanten.py

を実行すると以下のような画像ファイル(logo_hanten.png)ができます。白色エリアは黒くなって赤いエリアは水色になってますね。

RGB反転後ロゴ

些細なことですが、ファイル名にはちゃんと拡張子(.pngや.jpgなど)をつけてやる必要がありますね。拡張子をみて適切な画像変換を選らんでくれているんだと思います。

似たような関数にbitwise_and ,bitwise_or,bitwise_xorと中学数学とか情報処理試験に出てきそうな関数もありますね。and,or,xorはマスク処理で使われるので、ファイルソースというか情報源が2ついりますよね。たしかに2つないとandとかor,xorできないですね。notは単純な反転なので、ファイルソースひとつあれば新しい画像が出来上がります。マスクをつかった白色エリアだけぬきだしたりするbitwise_andサンプルもあるので、別の記事で実験してみます。