OpenCV エクササイズ
ホームディレクトリに移動しましょう。
1 |
cd ~ |
このエクササイズのために新しいディレクトリを作成しましょう。
1 2 |
mkdir pytest cd pytest |
下の画像をダウンロードして上で作成したディレクトリに保存して下さい。
下のコードをコピーして下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# import the necessary packages import numpy as np import cv2 # load the games image image = cv2.imread("test.png") # find the red color game in the image upper = np.array([65, 65, 255]) lower = np.array([0, 0, 200]) mask = cv2.inRange(image, lower, upper) # find contours in the masked image and keep the largest one (cnts, _) = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) c = max(cnts, key=cv2.contourArea) # approximate the contour peri = cv2.arcLength(c, True) approx = cv2.approxPolyDP(c, 0.05 * peri, True) # draw a green bounding box surrounding the red game cv2.drawContours(image, [approx], -1, (0, 255, 0), 4) cv2.imshow("Image", image) cv2.waitKey(0) |
※コード中のcv2.findContoursはOpenCVのバージョンが3.xの場合と4.xの場合で挙動が異なります。
ご自身の環境に合わせて以下の通りに書き換えてください。
OpenCVがver3.xの場合:
1 |
_, cnts, _ = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) |
OpenCVがver4.xの場合:
1 |
cnts, _ = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) |
補足:
ver3以前では返り値が(image, contours, hierarchy)の3要素だが、
ver4で返り値が(contours, hierarchy)の2要素に変更されている。
pytest.pyファイルを新しくviエディタで開いて下さい。
1 |
vi pytest.py |
先ほどコピー下コードをペーストして下さい。
pythonのコードを実行しましょう。
1 |
python pytest.py |
赤いロゴの周りに緑色の四角形が表示されていれば成功です。 真ん中の青いロゴの周りに四角形が表示されるように編集することにも挑戦してみましょう。 よろしければ、完成したコードはメールで送ってみてください。