動画の解説を参照
この授業では
Google Colab で開発を行います。
開発言語としては画像処理に関わるライブラリが豊富な Python を使用します。
動画の解説を参照
まず最初にライブラリを読み込む必要があります。
import cv2
from google.colab import files
1行目は
OpenCV というライブラリで、画像処理に関わる様々な処理を含みます。
2行目はGoogle Colabにファイルを読み込むためのものです。
このあとで以下の命令を実行すれば、画像をアップロードできます。
画像のデータを読み込むにはファイル名が必要なので、以下のようにしてファイル名を取得して「filename」に入れます。
filename = next(iter(file))
さらに、以下の命令を実行すれば「img」に画像の情報が保存されます。
img = cv2.imread(filename)
最後に以下の命令で画像を「ex1.jpg」として保存します。
cv2.imwrite("ex1.jpg", img)
まとめるとこのようになります。
import cv2
from google.colab import files
file = files.upload()
filename = next(iter(file))
img = cv2.imread(filename)
cv2.imwrite("ex1.jpg", img)
動画の解説を参照
「cv2.resize」は画像をリサイズする関数です。引数の入れ方には2通りありますが、まずは横・縦のサイズを直接指定して保存する方法を見てみましょう。
以下のコードではこの関数の第1引数が画像情報の変数、第2引数はカッコで囲まれた2つの数値で、これが出力画像の横・縦の幅になります。
この場合は出力画像は横400ピクセル、縦300ピクセルになります。
実際にそうなったかどうかを調べるため、「shape」で画像の大きさを取得してみます。「h, w = img.shape[:2]」を実行すると、h には元画像の縦の幅、w には横の幅が入ります。
縮小した「img2」からも同様にして h2, w2 に縦と横の幅を入れます。
あとは print文で表示させれば、確かに大きさが変わっていることが確認できます。
(このコードではこれまでに読み込んだ「img」を使いまわしています。課題1のセルの下に新しいコードセルを入れて実行してください)
img2 = cv2.resize(img, (400, 300))
cv2.imwrite("ex2.jpg", img2)
h, w = img.shape[:2]
print(f"元画像の幅: {w}, 元画像の高さ: {h}")
h2, w2 = img2.shape[:2]
print(f"画像2の幅: {w2}, 画像2の高さ: {h2}")
動画の解説を参照
課題2で取得した h, w の値を使い、「cv2.resize」の第2引数でこれらに定数をかけてやれば、「もとの何倍のサイズにする」という指定ができます。
「int(値)」は実数型の変数を整数に変換する関数です。このような変換をするのは、画像の横・縦のサイズが整数でなければならないからです。
この場合は出力画像は横幅がもとの2.1倍、縦の幅がもとの0.8倍になります。
(このコードでは「img」「h」「w」を使いまわしています。これまでのセルの下に新しいコードセルを入れて実行してください)
img3 = cv2.resize(img, (int(w * 2.1), int(h * 0.8)))
cv2.imwrite("ex3.jpg", img3)
h3, w3 = img3.shape[:2]
print(f"画像3の幅: {w3}, 画像3の高さ: {h3}")
動画の解説を参照
もとの画像のサイズを調べずに横・縦にそれぞれ倍率をかけることもできます。
以下のコードの「cv2.resize」関数では、第2引数 (横と縦のサイズを指定するところ) を「None」(つまり「なし」) にしています。
第3, 第4引数で横と縦の倍率を指定しています。
この場合は出力画像は横幅がもとの1.2倍、縦の幅がもとの2.1倍になります。
(このコードでも「img」を使いまわしています。これまでのセルの下に新しいコードセルを入れて実行してください)
img4 = cv2.resize(img, None, fx=1.2, fy=2.1)
cv2.imwrite("ex4.jpg", img4)
h4, w4 = img4.shape[:2]
print(f"画像4の幅: {w4}, 画像4の高さ: {h4}")
動画の解説を参照
今回作成したノートブックを「imgprc2024@gmail.com」と共有してください。
※ 課題の再提出の際は、ノートブックの再度の共有はせずにチャットで連絡してください。