OpenCV書き始め(あるいは休暇最終日のリハビリ)

修学旅行の引率を免れたのをいいことに、代休を消化して5連休。 のんびりできて助かったが、仕事の頭脳に切り替えるため、少しリハビリ。

そんな時はcodeを書くのが良いが、知ってるcodeを書いてもしかたないので、 OpenCVのテストをPythonで。

学生時代からあるライブラリだが、Pythonは当時無かった。 というか、Javaがデビューした頃なので、、Pythonなど知るわけもなく。

とりあえず、画像ファイルを読み込んで、コピーとリサイズしておく。

import cv2

img = cv2.imread('img.png', img)            # 画像ファイルを読み込む

もちろん読み込んだだけでは何も起きないが、リハビリのため一つずつ処理を実行。 そのまま別のファイルに書き込む。

import cv2

img = cv2.imread('img.png', img)            # 画像ファイルを読み込む

cv2.imwrite('img2.png', img)            # 読み込んだ画像データを、新しいファイルに書き込む

引数として「対象のファイル名」、次に「画像オブジェクト」。 それはそれで、わかりやすい。

「何を」「どこへ」という流れの順に書くのも納得感があるけれど、 「こういう順なのね」と気づいて確認して、実行するのはリハビリ安全策。

実際に新しいファイル「img2.png」ができていて、画像がコピーされているのを確認。

次に、リサイズ。 元の画像は横長だが、300x300 の正方形にしてから、別ファイルに書き込んでみる。

import cv2

img = cv2.imread('img.png', img)            # 画像ファイルを読み込む
cv2.resize(img, dsize=(300, 300))            # 読み込んだ画像データをリサイズする
cv2.imwrite('img2.png', img)            # リサイズした画像データを、新しいファイルに書き込む

しかしこれでは、元の画像と同じ内容が書き込まれる。

、、ということは、.resize()関数は、戻り値として処理結果の画像オブジェクトを返すだけで、 引数の画像オブジェクトを変更はしない。 あ、そ。

import cv2

img = cv2.imread('img.png', img)            # 画像ファイルを読み込む
img2 = cv2.resize(img, dsize=(300, 300))            # 読み込んだ画像データをリサイズして新しい画像オブジェクトを生成する
cv2.imwrite('img2.png', img2)            # 新しい方の画像オブジェクトを、ファイルに書き込む

これなら、リサイズ済みの画像オブジェクトをファイルに書き込むことができる。 (あたりまえだ) できたファイルを開くと、当然 300x300 のサイズになっている。

という辺りで、都合によりリハビリ終了。 (休日は休日で、家庭の事情があれこれあるため、)無理しない程度にとどめておこう。

とりあえず。