From cfe0c1a7dd0b5cffc576e928a926e93ccf6439fe Mon Sep 17 00:00:00 2001 From: KoyoNoguchi Date: Fri, 3 Jul 2026 00:29:42 +0900 Subject: [PATCH] =?UTF-8?q?=E5=BE=8C=E3=81=AF=E7=94=BB=E5=83=8F=E3=82=92?= =?UTF-8?q?=E5=8F=96=E3=81=A3=E3=81=A6=E3=83=AC=E3=83=9D=E3=83=BC=E3=83=88?= =?UTF-8?q?=E4=BD=9C=E3=82=8B=E3=81=A0=E3=81=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3_10_bg_subtraction.py | 97 +++++++++++++++++++++++++++ 3_11_tracking.py | 87 ++++++++++++++++++++++++ 3_1_resize_rotate.py | 41 +++++++++++ 3_2_grayscale.py | 23 +++++++ 3_3_binarization.py | 31 +++++++++ 3_4_roi.py | 34 ++++++++++ 3_5_edge.py | 43 ++++++++++++ kadai6.py => 3_6_color_extraction.py | 4 +- 3_7_morphology.py | 44 ++++++++++++ 3_8_webcam.py | 38 +++++++++++ 3_9_face_detection.py | 67 ++++++++++++++++++ kadai1.py | 36 ---------- kadai2.py | 20 ------ kadai3.py | 28 -------- kadai4.py | 31 --------- kadai5.py | 40 ----------- mask.jpg | Bin 0 -> 2874 bytes person.jpg | Bin 0 -> 100507 bytes cat.jfif => sample.jpg | Bin 19 files changed, 507 insertions(+), 157 deletions(-) create mode 100644 3_10_bg_subtraction.py create mode 100644 3_11_tracking.py create mode 100644 3_1_resize_rotate.py create mode 100644 3_2_grayscale.py create mode 100644 3_3_binarization.py create mode 100644 3_4_roi.py create mode 100644 3_5_edge.py rename kadai6.py => 3_6_color_extraction.py (92%) create mode 100644 3_7_morphology.py create mode 100644 3_8_webcam.py create mode 100644 3_9_face_detection.py delete mode 100644 kadai1.py delete mode 100644 kadai2.py delete mode 100644 kadai3.py delete mode 100644 kadai4.py delete mode 100644 kadai5.py create mode 100644 mask.jpg create mode 100644 person.jpg rename cat.jfif => sample.jpg (100%) diff --git a/3_10_bg_subtraction.py b/3_10_bg_subtraction.py new file mode 100644 index 0000000..11f3e95 --- /dev/null +++ b/3_10_bg_subtraction.py @@ -0,0 +1,97 @@ +# 実験課題10 +# 3.10 背景差分法(ラベリング・ノイズ処理含む) + +import cv2 +import numpy as np + +# Webカメラの初期化 +cap = cv2.VideoCapture(0) + +if not cap.isOpened(): + print("カメラを開けませんでした。") +else: + print("背景差分法を開始します。") + print("'q': 終了, 'r': 背景画像を現フレームで更新") + + # 最初のフレームを背景画像として取得するための準備 + bg_gray = None + + while True: + ret, frame = cap.read() + if not ret: + print("フレームを取得できませんでした。") + break + + # 差分計算を安定させるため、現フレームをグレースケール化 + gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + + # ガウシアンブラ(平滑化)を適用して、カメラ特有の細かいノイズを低減 + gray = cv2.GaussianBlur(gray, (21, 21), 0) + + # 起動直後、または 'r' キーが押された場合に背景画像を保存・更新する + if bg_gray is None: + bg_gray = gray + print("背景画像を保存しました。カメラの前から離れてください。") + continue + + # --- 3.101 背景差分法:背景画像と現フレームの絶対差分を計算 --- + frame_diff = cv2.absdiff(bg_gray, gray) + + # 差分画像を2値化して、動いている領域(前景)を白(255)にする + # 閾値は環境に合わせて調整(ここでは例として 25) + _, thresh = cv2.threshold(frame_diff, 25, 255, cv2.THRESH_BINARY) + + # --- 3.102 ノイズ処理(モルフォロジー演算:オープニング) --- + # 3.7で学んだ手法を使い、背景に散らばる小さなチラツキノイズを消去 + kernel = np.ones((5, 5), np.uint8) + thresh = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel) + # 領域内の穴を埋めて結合を強める(クロージング) + thresh = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel) + + # --- 3.102 ラベリング処理 --- + # 2値化画像から、繋がっている白い領域(動体)を検出してラベルを貼る + # nlabels: ラベルの総数(背景含む) + # labels: 各画素にラベル番号(0, 1, 2...)が割り当てられた画像 + # stats: 各領域の矩形座標や面積[x, y, w, h, area]の行列 + # centroids: 各領域の中心座標 + nlabels, labels, stats, centroids = cv2.connectedComponentsWithStats(thresh) + + # 各ラベルごとに色分けするためのランダムな色マップを作成(背景の0は黒にする) + # 乱数のシードを固定して、フレーム間で色が激しく変わるのを防ぐ + np.random.seed(42) + colors = np.random.randint(0, 255, (nlabels, 3), dtype=np.uint8) + colors[0] = [0, 0, 0] # ラベル0(背景)は黒に固定 + + # 画素ごとのラベル番号に対応する色を割り当てて、色分け画像(ラベリング画像)を作成 + labeled_img = colors[labels] + + # 動体領域に矩形(枠線)を描画する + for i in range(1, nlabels): # 0は背景なので1からループ + x = stats[i, cv2.CC_STAT_LEFT] + y = stats[i, cv2.CC_STAT_TOP] + w = stats[i, cv2.CC_STAT_WIDTH] + h = stats[i, cv2.CC_STAT_HEIGHT] + area = stats[i, cv2.CC_STAT_AREA] + + # 面積が小さすぎる領域(微小なノイズの残り)は無視する + if area > 500: + # 動体を緑色の矩形で囲む + cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) + # ラベル番号を画像上に描画 + cv2.putText(frame, f"ID:{i}", (x, y - 10), + cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) + + # --- 結果の表示 --- + cv2.imshow('Original Frame (Motion Detection)', frame) + cv2.imshow('Foreground Mask (Thresh)', thresh) + cv2.imshow('Labeled Components', labeled_img) + + # キー入力の受付 + key = cv2.waitKey(1) & 0xFF + if key == ord('q'): + break + elif key == ord('r'): + bg_gray = None # 次のループで背景が再キャプチャされる + + cap.release() + cv2.destroyAllWindows() \ No newline at end of file diff --git a/3_11_tracking.py b/3_11_tracking.py new file mode 100644 index 0000000..bbe32e0 --- /dev/null +++ b/3_11_tracking.py @@ -0,0 +1,87 @@ +# 実験課題11 +# 3.11 トラッキング(任意) + +import cv2 + +# Webカメラの初期化 +cap = cv2.VideoCapture(0) + +if not cap.isOpened(): + print("カメラを開けませんでした。") +else: + print("トラッキングテストを開始します。") + + # 最初の1フレームを読み込む + ret, frame = cap.read() + + if not ret: + print("フレームを取得できませんでした。") + else: + # --- 追跡対象の選択(ROI) --- + print("【操作方法】") + print("1. 追跡したい物体をマウスでドラッグして四角く囲んでください。") + print("2. 囲んだら Enter または Space キーを押して決定します。") + print("3. やり直す場合は 'c' キーを押してください。") + + # ユーザーに追跡対象をマウスで選択させるウィンドウを表示 + # bbox には選択された領域の (x, y, w, h) が格納される + while True: + # ユーザーに追跡対象をマウスで選択させる + bbox = cv2.selectROI("Tracking", frame, fromCenter=False, showCrosshair=True) + + # 幅(bbox[2]) または 高さ(bbox[3]) が 0 の場合 + # ('c'キーが押された、または未選択のままEnterが押された場合) + if bbox[2] == 0 or bbox[3] == 0: + print("領域がリセットされました。やり直します。") + print("もう一度マウスをドラッグして対象を囲み、Enterキーを押してください。") + # continueによってループの先頭に戻り、再度selectROIを実行する + continue + else: + # 正しく領域が選択されたらループを抜けてトラッキング処理へ進む + print("領域が確定しました。トラッキングを開始します。") + break + + # --- トラッカーの生成と初期化 --- + # 拡張モジュールに含まれる高精度なトラッカー「CSRT」を生成 + # ※OpenCVのバージョンによっては legacy に分類されるため、try-exceptで安全に呼び出す + try: + tracker = cv2.TrackerCSRT_create() + except AttributeError: + tracker = cv2.legacy.TrackerCSRT_create() + + # 最初のフレームと、選択した領域(bbox)を渡してトラッカーに学習(初期化)させる + tracker.init(frame, bbox) + + print("追跡中... 終了するには 'q' キーを押してください。") + + # --- トラッキングのループ処理 --- + while True: + ret, frame = cap.read() + if not ret: + break + + # 新しいフレームをトラッカーに渡し、対象がどこに移動したか推測させる + # success: 追跡成功(True) / 失敗(False) + # bbox: 新しい座標とサイズ (x, y, w, h) + success, bbox = tracker.update(frame) + + if success: + # 追跡成功時:新しい座標を整数に変換して青い枠線を描画 + p1 = (int(bbox[0]), int(bbox[1])) + p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3])) + cv2.rectangle(frame, p1, p2, (255, 0, 0), 2, 1) + cv2.putText(frame, "Tracking", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 0, 0), 2) + else: + # 追跡失敗時(画面外に出た、何かの裏に完全に隠れた等):赤い警告文を表示 + cv2.putText(frame, "Lost", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) + + # 結果の表示 + cv2.imshow("Tracking", frame) + + # 'q' キーで終了 + if cv2.waitKey(1) & 0xFF == ord('q'): + break + + # 終了処理 + cap.release() + cv2.destroyAllWindows() \ No newline at end of file diff --git a/3_1_resize_rotate.py b/3_1_resize_rotate.py new file mode 100644 index 0000000..07ab223 --- /dev/null +++ b/3_1_resize_rotate.py @@ -0,0 +1,41 @@ +# 実験課題1 +# 3.1 画像サイズ変換・画像の回転 + +import cv2 + +# 画像の読み込み(任意のカラー画像を用意し、ファイル名を指定してください) +image_path = 'sample.jpg' +img = cv2.imread(image_path) + +if img is None: + print("画像を読み込めませんでした。ファイルパスを確認してください。") +else: + # --- 画像サイズ変換 --- + # 元画像の高さと幅を取得 + height, width = img.shape[:2] + + # 縦横を1/2のサイズに計算 + new_width = width // 2 + new_height = height // 2 + + # 画像のサイズを変更 + resized_img = cv2.resize(img, (new_width, new_height)) + + # --- 画像の回転 --- + # 回転の中心座標を計算(画像の中心) + center = (width // 2, height // 2) + + # 45度回転するための変換行列を作成(スケールは1.0でそのまま) + rotation_matrix = cv2.getRotationMatrix2D(center, 45, 1.0) + + # アフィン変換を適用して画像を回転 + rotated_img = cv2.warpAffine(img, rotation_matrix, (width, height)) + + # --- 結果の表示 --- + cv2.imshow('Original Image', img) + cv2.imshow('Resized Image (1/2)', resized_img) + cv2.imshow('Rotated Image (45 degrees)', rotated_img) + + # キー入力待ち(任意のキーを押すとウィンドウが閉じる) + cv2.waitKey(0) + cv2.destroyAllWindows() \ No newline at end of file diff --git a/3_2_grayscale.py b/3_2_grayscale.py new file mode 100644 index 0000000..d415b88 --- /dev/null +++ b/3_2_grayscale.py @@ -0,0 +1,23 @@ +# 実験課題2 +# 3.2 グレースケール化 + +import cv2 + +# 画像の読み込み(カラー画像を用意し、ファイル名を指定してください) +image_path = 'sample.jpg' +img = cv2.imread(image_path) + +if img is None: + print("画像を読み込めませんでした。ファイルパスを確認してください。") +else: + # --- グレースケール化 --- + # BGR形式のカラー画像をグレースケールに変換 + gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + + # --- 結果の表示 --- + cv2.imshow('Original Color Image', img) + cv2.imshow('Grayscale Image', gray_img) + + # キー入力待ち + cv2.waitKey(0) + cv2.destroyAllWindows() \ No newline at end of file diff --git a/3_3_binarization.py b/3_3_binarization.py new file mode 100644 index 0000000..386f6c6 --- /dev/null +++ b/3_3_binarization.py @@ -0,0 +1,31 @@ +# 実験課題3 +# 3.3 2値化 + +import cv2 + +# 画像の読み込み(3.2と同じ画像を使用) +image_path = 'sample.jpg' + +# 第2引数に 0 (cv2.IMREAD_GRAYSCALE) を指定し、最初からグレースケールとして読み込む +gray_img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) + +if gray_img is None: + print("画像を読み込めませんでした。ファイルパスを確認してください。") +else: + # --- 2値化処理 --- + # 閾値(自身の画像に合わせて0〜255の間で適切な値に調整してください) + threshold_value = 127 + # 閾値を超えた画素に割り当てる値(白 = 255) + max_value = 255 + + # 2値化を実行 + # ret には使用された閾値が、binary_img には2値化後の画像が代入される + ret, binary_img = cv2.threshold(gray_img, threshold_value, max_value, cv2.THRESH_BINARY) + + # --- 結果の表示 --- + cv2.imshow('Original Grayscale Image', gray_img) + cv2.imshow('Binarized Image (Threshold: 127)', binary_img) + + # キー入力待ち + cv2.waitKey(0) + cv2.destroyAllWindows() \ No newline at end of file diff --git a/3_4_roi.py b/3_4_roi.py new file mode 100644 index 0000000..bba14be --- /dev/null +++ b/3_4_roi.py @@ -0,0 +1,34 @@ +# 実験課題4 +# 3.4 ROIの利用 + +import cv2 + +# 画像の読み込み(任意の画像を用意してください) +image_path = 'sample.jpg' +img = cv2.imread(image_path) + +if img is None: + print("画像を読み込めませんでした。ファイルパスを確認してください。") +else: + # 画像の高さ、幅を取得 + height, width = img.shape[:2] + + # --- ROI(関心領域)の指定 --- + # 切り出す領域の開始位置と終了位置を計算(例として、画像の中心部分を切り出し) + start_y = height // 4 + end_y = height * 3 // 4 + start_x = width // 4 + end_x = width * 3 // 4 + + # --- 画像の切り出し --- + # NumPy配列のスライス機能を使用して、指定した範囲を切り出す + # 指定順序は [yの開始:yの終了, xの開始:xの終了] + roi_img = img[start_y:end_y, start_x:end_x] + + # --- 結果の表示 --- + cv2.imshow('Original Image', img) + cv2.imshow('ROI (Region of Interest)', roi_img) + + # キー入力待ち + cv2.waitKey(0) + cv2.destroyAllWindows() \ No newline at end of file diff --git a/3_5_edge.py b/3_5_edge.py new file mode 100644 index 0000000..cdb2eb9 --- /dev/null +++ b/3_5_edge.py @@ -0,0 +1,43 @@ +# 実験課題5 +# 3.5 エッジ処理 + +import cv2 + +# 画像の読み込み(エッジ検出は通常グレースケール画像に対して行います) +image_path = 'sample.jpg' +img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) + +if img is None: + print("画像を読み込めませんでした。ファイルパスを確認してください。") +else: + # --- Sobel(ソーベル)フィルタ --- + # X方向の勾配(縦のエッジ)とY方向の勾配(横のエッジ)を計算 + # 負の勾配を保持するため、出力データ型を cv2.CV_64F に指定 + sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3) + sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3) + + # 絶対値を取り、表示可能な8ビット符号なし整数(0〜255)に変換 + sobel_x_abs = cv2.convertScaleAbs(sobel_x) + sobel_y_abs = cv2.convertScaleAbs(sobel_y) + + # X方向とY方向の画像を1:1の割合で合成して全体のエッジ画像を作成 + sobel_combined = cv2.addWeighted(sobel_x_abs, 0.5, sobel_y_abs, 0.5, 0) + + # --- Laplacian(ラプラシアン)フィルタ --- + # 2次微分を用いて全方向のエッジを同時に検出 + laplacian = cv2.Laplacian(img, cv2.CV_64F) + laplacian_abs = cv2.convertScaleAbs(laplacian) + + # --- Canny(キャニー)法 --- + # ノイズ除去と2つの閾値処理を組み合わせた、より高精度なエッジ検出アルゴリズム + canny = cv2.Canny(img, 50, 150) + + # --- 結果の表示 --- + cv2.imshow('Original Grayscale', img) + cv2.imshow('Sobel Edge', sobel_combined) + cv2.imshow('Laplacian Edge', laplacian_abs) + cv2.imshow('Canny Edge', canny) + + # キー入力待ち + cv2.waitKey(0) + cv2.destroyAllWindows() \ No newline at end of file diff --git a/kadai6.py b/3_6_color_extraction.py similarity index 92% rename from kadai6.py rename to 3_6_color_extraction.py index 1270bd2..e44c603 100644 --- a/kadai6.py +++ b/3_6_color_extraction.py @@ -1,5 +1,5 @@ # 実験課題6 -# 色領域抽出 +# 3.6 色領域抽出 import cv2 import numpy as np @@ -18,7 +18,7 @@ else: # --- 肌色の範囲を指定 (HSV) --- # OpenCVにおけるH(色相)は0〜179、S(彩度)とV(明度)は0〜255 # ※画像の色合いや照明条件に合わせて微調整が必要です - lower_skin = np.array([0, 20, 70]) # 下限値 (H, S, V) + lower_skin = np.array([0, 0, 70]) # 下限値 (H, S, V) upper_skin = np.array([20, 255, 255]) # 上限値 (H, S, V) # --- マスク画像の作成 --- diff --git a/3_7_morphology.py b/3_7_morphology.py new file mode 100644 index 0000000..6182d76 --- /dev/null +++ b/3_7_morphology.py @@ -0,0 +1,44 @@ +# 実験課題7 +# 3.7 膨張・収縮 + +import cv2 +import numpy as np + +# 3.6の画像(色領域を抽出した画像)を準備するための前処理 +image_path = 'person.jpg' +img = cv2.imread(image_path) + +if img is None: + print("画像を読み込めませんでした。ファイルパスを確認してください。") +else: + # 3.6の処理(肌色領域の抽出)を再現 + hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) + lower_skin = np.array([0, 0, 70]) + upper_skin = np.array([20, 255, 255]) + skin_mask = cv2.inRange(hsv_img, lower_skin, upper_skin) + extracted_img = cv2.bitwise_and(img, img, mask=skin_mask) + + # --- 膨張・収縮のための構造要素(カーネル)の定義 --- + # 5x5の正方形のカーネルを作成 + kernel = np.ones((5, 5), np.uint8) + + # --- ① 収縮 3回 → 膨張 3回(オープニング処理) --- + # まず収縮(erode)を3回実行 + eroded_first = cv2.erode(extracted_img, kernel, iterations=3) + # その後、膨張(dilate)を3回実行 + seq_opening = cv2.dilate(eroded_first, kernel, iterations=3) + + # --- ② 膨張 3回 → 収縮 3回(クロージング処理) --- + # まず膨張(dilate)を3回実行 + dilated_first = cv2.dilate(extracted_img, kernel, iterations=3) + # その後、収縮(erode)を3回実行 + seq_closing = cv2.erode(dilated_first, kernel, iterations=3) + + # --- 結果の表示 --- + cv2.imshow('Original Extracted Image (3.6)', extracted_img) + cv2.imshow('Sequence 1: Erosion 3 -> Dilation 3', seq_opening) + cv2.imshow('Sequence 2: Dilation 3 -> Erosion 3', seq_closing) + + # キー入力待ち + cv2.waitKey(0) + cv2.destroyAllWindows() \ No newline at end of file diff --git a/3_8_webcam.py b/3_8_webcam.py new file mode 100644 index 0000000..1e203de --- /dev/null +++ b/3_8_webcam.py @@ -0,0 +1,38 @@ +# 実験課題8 +# 3.8 Webカメラ映像のキャプチャと表示 + +import cv2 + +# Webカメラのデバイスを初期化(引数の 0 は標準のカメラデバイスを指します) +cap = cv2.VideoCapture(0) + +# カメラが正常に起動・接続できたかを確認 +if not cap.isOpened(): + print("カメラを開けませんでした。カメラの接続や権限を確認してください。") +else: + print("カメラ映像の表示を開始します。終了するには 'q' キーを押してください。") + + # 映像は「連続した静止画(フレーム)」なので、無限ループで取得し続けます + while True: + # カメラから1フレーム(1枚の画像)を読み込む + # ret には取得成功の可否(True/False)、frame には画像データ(NumPy配列)が入ります + ret, frame = cap.read() + + # 画像が正しく取得できなかった場合はループを終了 + if not ret: + print("フレームを正常に取得できませんでした。") + break + + # 取得したフレームを画面に表示 + cv2.imshow('Webcam Capture', frame) + + # 1ミリ秒だけキー入力を待機する + # もし入力されたキーが 'q' であれば、ループを抜けて終了処理へ進む + if cv2.waitKey(1) & 0xFF == ord('q'): + break + + # --- 終了処理 --- + # カメラデバイスを解放(プログラムからの占有を解除) + cap.release() + # 全てのウィンドウを閉じる + cv2.destroyAllWindows() \ No newline at end of file diff --git a/3_9_face_detection.py b/3_9_face_detection.py new file mode 100644 index 0000000..409dfbf --- /dev/null +++ b/3_9_face_detection.py @@ -0,0 +1,67 @@ +# 実験課題9 +# 3.9 顔検出 + +import cv2 + +# --- カスケード分類器(学習済みデータ)の読み込み --- +# OpenCVに標準で用意されている顔検出用のXMLファイルを指定 +cascade_path = cv2.data.haarcascades + 'haarcascade_frontalface_default.xml' +face_cascade = cv2.CascadeClassifier(cascade_path) + +# Webカメラの初期化 +cap = cv2.VideoCapture(0) + +if not cap.isOpened(): + print("カメラを開けませんでした。") +else: + print("顔検出を開始します。'q' キーで終了します。") + + while True: + ret, frame = cap.read() + if not ret: + print("フレームを取得できませんでした。") + break + + # 3.91 顔検出の精度と処理速度向上のため、グレースケール画像を作成 + gray_img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + + # グレースケール画像から顔を検出 + faces = face_cascade.detectMultiScale( + gray_img, + scaleFactor=1.1, + minNeighbors=5, + minSize=(30, 30) + ) + + # 検出されたすべての顔に対してループ処理 + for (x, y, w, h) in faces: + + # --- 3.92 顔を隠す処理(別の画像の貼り付け) --- + # 貼り付けたい画像(例: 'mask.jpg')を読み込んで顔の領域に上書きします + mask_img = cv2.imread('mask.jpg') + + if mask_img is not None: + # 読み込んだ画像を、検出された顔の横幅(w)と縦幅(h)と同じサイズにリサイズ + mask_resized = cv2.resize(mask_img, (w, h)) + # NumPyのスライス機能(ROI)を使い、元のフレームの顔領域を隠し用画像で上書き + frame[y:y + h, x:x + w] = mask_resized + else: + # 'mask.jpg' が見つからない場合は、代わりに顔領域を黒い矩形で塗りつぶして隠す(値を0にする) + # 資料の「顔を隠すような処理」を代替実行します + frame[y:y + h, x:x + w] = 0 + + # --- 3.91 顔部分を矩形で囲む --- + # 隠す処理の後に矩形を描画することで、枠線が隠されずに上から表示されます + # 引数: (対象画像, 開始座標, 終了座標, 色(BGR), 線の太さ) + cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) + + # 結果を画面に表示 + cv2.imshow('Face Detection & Masking', frame) + + # 'q' キーが押されたら終了 + if cv2.waitKey(1) & 0xFF == ord('q'): + break + + # 後片付け + cap.release() + cv2.destroyAllWindows() \ No newline at end of file diff --git a/kadai1.py b/kadai1.py deleted file mode 100644 index bb496a2..0000000 --- a/kadai1.py +++ /dev/null @@ -1,36 +0,0 @@ -# 実験課題1 -# 画像サイズ変換・画像の回転 - -import cv2 - -# 画像の読み込み(任意のカラー画像を用意し、ファイル名を指定してください) -image_path = 'cat.jfif' -img = cv2.imread(image_path) - -height, width = img.shape[:2] - -# 縦横を1/2のサイズに計算 -new_width = width // 2 -new_height = height // 2 - -# 画像のサイズを変更 -resized_img = cv2.resize(img, (new_width, new_height)) - -# --- 画像の回転 --- -# 回転の中心座標を計算(画像の中心) -center = (width // 2, height // 2) - -# 45度回転するための変換行列を作成(スケールは1.0でそのまま) -rotation_matrix = cv2.getRotationMatrix2D(center, 45, 1.0) - -# アフィン変換を適用して画像を回転 -rotated_img = cv2.warpAffine(img, rotation_matrix, (width, height)) - -# --- 結果の表示 --- -cv2.imshow('Original Image', img) -cv2.imshow('Resized Image (1/2)', resized_img) -cv2.imshow('Rotated Image (45 degrees)', rotated_img) - -# キー入力待ち(任意のキーを押すとウィンドウが閉じる) -cv2.waitKey(0) -cv2.destroyAllWindows() diff --git a/kadai2.py b/kadai2.py deleted file mode 100644 index 8829642..0000000 --- a/kadai2.py +++ /dev/null @@ -1,20 +0,0 @@ -# 実験課題2 -# グレースケール化 - -import cv2 - -# 画像の読み込み(カラー画像を用意し、ファイル名を指定してください) -image_path = 'cat.jfif' -img = cv2.imread(image_path) - -# --- グレースケール化 --- -# BGR形式のカラー画像をグレースケールに変換 -gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) - -# --- 結果の表示 --- -cv2.imshow('Original Color Image', img) -cv2.imshow('Grayscale Image', gray_img) - -# キー入力待ち -cv2.waitKey(0) -cv2.destroyAllWindows() \ No newline at end of file diff --git a/kadai3.py b/kadai3.py deleted file mode 100644 index aa08537..0000000 --- a/kadai3.py +++ /dev/null @@ -1,28 +0,0 @@ -# 実験課題3 -# 2値化 - -import cv2 - -# 画像の読み込み(3.2と同じ画像を使用) -image_path = 'cat.jfif' - -# 第2引数に 0 (cv2.IMREAD_GRAYSCALE) を指定し、最初からグレースケールとして読み込む -gray_img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) - -# --- 2値化処理 --- -# 閾値(自身の画像に合わせて0〜255の間で適切な値に調整してください) -threshold_value = 127 -# 閾値を超えた画素に割り当てる値(白 = 255) -max_value = 255 - -# 2値化を実行 -# ret には使用された閾値が、binary_img には2値化後の画像が代入される -ret, binary_img = cv2.threshold(gray_img, threshold_value, max_value, cv2.THRESH_BINARY) - -# --- 結果の表示 --- -cv2.imshow('Original Grayscale Image', gray_img) -cv2.imshow('Binarized Image (Threshold: 127)', binary_img) - -# キー入力待ち -cv2.waitKey(0) -cv2.destroyAllWindows() \ No newline at end of file diff --git a/kadai4.py b/kadai4.py deleted file mode 100644 index d773411..0000000 --- a/kadai4.py +++ /dev/null @@ -1,31 +0,0 @@ -# 実験課題4 -# ROIの利用 - -import cv2 - -# 画像の読み込み(任意の画像を用意してください) -image_path = 'cat.jfif' -img = cv2.imread(image_path) - -# 画像の高さ、幅を取得 -height, width = img.shape[:2] - -# --- ROI(関心領域)の指定 --- -# 切り出す領域の開始位置と終了位置を計算(例として、画像の中心部分を切り出し) -start_y = height // 4 -end_y = height * 3 // 4 -start_x = width // 4 -end_x = width * 3 // 4 - -# --- 画像の切り出し --- -# NumPy配列のスライス機能を使用して、指定した範囲を切り出す -# 指定順序は [yの開始:yの終了, xの開始:xの終了] -roi_img = img[start_y:end_y, start_x:end_x] - -# --- 結果の表示 --- -cv2.imshow('Original Image', img) -cv2.imshow('ROI (Region of Interest)', roi_img) - -# キー入力待ち -cv2.waitKey(0) -cv2.destroyAllWindows() \ No newline at end of file diff --git a/kadai5.py b/kadai5.py deleted file mode 100644 index bedab97..0000000 --- a/kadai5.py +++ /dev/null @@ -1,40 +0,0 @@ -# 実験課題5 -# 3.5 エッジ処理 - -import cv2 - -# 画像の読み込み(エッジ検出は通常グレースケール画像に対して行います) -image_path = 'cat.jfif' -img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) - -# --- Sobel(ソーベル)フィルタ --- -# X方向の勾配(縦のエッジ)とY方向の勾配(横のエッジ)を計算 -# 負の勾配を保持するため、出力データ型を cv2.CV_64F に指定 -sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3) -sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3) - -# 絶対値を取り、表示可能な8ビット符号なし整数(0〜255)に変換 -sobel_x_abs = cv2.convertScaleAbs(sobel_x) -sobel_y_abs = cv2.convertScaleAbs(sobel_y) - -# X方向とY方向の画像を1:1の割合で合成して全体のエッジ画像を作成 -sobel_combined = cv2.addWeighted(sobel_x_abs, 0.5, sobel_y_abs, 0.5, 0) - -# --- Laplacian(ラプラシアン)フィルタ --- -# 2次微分を用いて全方向のエッジを同時に検出 -laplacian = cv2.Laplacian(img, cv2.CV_64F) -laplacian_abs = cv2.convertScaleAbs(laplacian) - -# --- Canny(キャニー)法 --- -# ノイズ除去と2つの閾値処理を組み合わせた、より高精度なエッジ検出アルゴリズム -canny = cv2.Canny(img, 50, 150) - -# --- 結果の表示 --- -cv2.imshow('Original Grayscale', img) -cv2.imshow('Sobel Edge', sobel_combined) -cv2.imshow('Laplacian Edge', laplacian_abs) -cv2.imshow('Canny Edge', canny) - -# キー入力待ち -cv2.waitKey(0) -cv2.destroyAllWindows() \ No newline at end of file diff --git a/mask.jpg b/mask.jpg new file mode 100644 index 0000000000000000000000000000000000000000..566ba778081ae3f3e1af6f75133951db67dbd35a GIT binary patch literal 2874 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 z z!sm{JXCIF>UN%@CfxS88@tzNJ{xtNpm~J*{%yMPPr=cpWKQY3Y-S0C8L>Bxl<+V|GqE;~As??a0SIw57m3fgLCT z58dj0>A;eHZb;;3y$z7(831(6D-F?teuACAwP%xXxyboXPw7>+{{W;hIRiPtt9p1V zAkIRC>r|$E%*XEndghP;{o~=VF~=0c!(yCBG55)#hSVb&J$Rr7_b1kuCl~|_(iQ-A zG${-{Kb-&s73)skLUI8DnmBK2Rv2(Z^m zkQ;zP^f=EnTmcmCVYdf4sM=57G3U3^q&am5Z`69!ZNWXeVt^r-lI??#PI76E3X(C? zr8&VYKqD0y2L~LJKm!BVjPy9Ah!WT*C%3gVmkI#{5l@MSnlK3bXak`5Yi>`BEpQ0f ztbSg-G5u@Q5(ZsGcAT!!y-b-I>(A%SdEdeaH~6&Us=(Ob^V5z$t$ID2Fbzsl_&^Q= z08aDRdJnI?JKI!DmCM(+DDub?_-zYyX?x^cLj<2g{d{5^TDQeWO)0mmm99jX!274DMQCzo*Gkan*%9huGB zD;C@AGm4(d*;;u*Gh`1;W}>l-i|mp|t!K=e(Ah=urEM-3im7ne&Id!>)Y=gy>0LqG z4>|OxwIm5~k(M9Mizy3AM=IIQM{2me2%J)tj-E9G_l@PNh3q*Ztg8e@jZ^?YCyf0* zm7S-S5lMp1q<~+)PL-u-f;IC3v20)+!FcsK>%~_?oihEp{{W+gC}flYyJ~^Y^v^ug z?^+v6Hj&^67b83JGusEfN2f4l9B$7XbyMH)=Ck}^s5DT;6kr4~JfCw%dzq!K zyBz+lsvG;F#5d52rh(b;aD9mADp>yjd`V(xcBFpS2SITZFJ|jbyXib zAI`c@4}3VEQ|3~tiraT%f_*brz8rX1YDJ`E1TIMVcLGPfeHZX!;e^`V%uOw`2(!0{ z@`&951E%0R{XUh=R}i7A*&Uc%GN|=DufyL1ZI(n?;*-pAlteTd;n3Dd0YcP*q+&eCsr9BwBEkljNMucdX7_$Jk5 z^W(C#k?=RPiO^?)0O`lmx21Wt^CYA0>iZ+uhD?@|XU&>V?4=dio+&Jz0suw2jj+SN zD~+Uk{iSO`RQ1!WZds7dVj#~Rb0NGEs}4~`uz{gzl+e5Au1;FR1!@1MGP^{+a(2YJ8%f!4l+{jGdHH2(mJ`k9(G0!I_>7$6TRR4Bk0 zA1KFs8u|A1u>6dlafqTsHibm4DgY~IUtc%FO z1B`NMpl?x}0C*Hc0>90`>6!p+h#7yaMx$(>O0_gzQsW0b{VFC4v}f;713}DR&VqMy zNw;Y|N2NPyZbbk&dgKwutvwjNagseLfd(_TAoS;@5ezm7z%&gzGD4(hb_W$1B)72Q zq?6@Qk&N}ISrozx0#DbyOa>aIJZ0#%1~Vk`O`{f~cYofG!B_yMDM+eK)SJwiVw?#p)RG~2ZR zOK#`8D|9{7spxCU#zCjdwmzFI#6DkRFOj#b+h%u_zEs8>ZOO-a?!gF@gqtSAs`e4@&&C{iJ>fUVI7h)b5=L5fh!R4mkB4!So`r-bPu508j=pMl0Bil$M9b)P$+Z@>XZ`-S7+IW}ESA z;jf4MMWnx-rfc>vY8LK#GD?Af_28Uy+#2og>_p3*q>+udY~$(vd)Mbz{16NFmQNl2 z&ljEpzPVF-;9K7=6hC?FZW*PF^ysn)SFiVYuhHn_5=I?>3Kt;*09WZ=O;~c&X!_g^ zAylHAcV{Ew9Voz(7C$Vb<-oxQy?H;x>tFN)i6 zFgAd|eR1EfHRS&Q5)mP^o;PKUR1g%9%=zhnc+Wg_t}7{gF2>86Gv<;%8NX_e2+Q#E z_L1>*oxCzz#r>fr<(n?f1elc>NGAhx9y?$UTK%p4ivB3C#$Vav!d@tijKABuTo*0J z3og(lUN{(aVUKG3ss8|im-tPs{vp|GLNyV+zuBjKgkzG*#Qy*h<0ly&ZfgZ9N~dqs`eXhGVd4b2_^fL!5w>5hR}^a_L%WSv@H|0_lAs%v~FS&>JyT^ zxNpbsuh`8R#pke8l?sx$9Fh(PYOG6q`gJQSU%AosIUQ*w7d}$s90wswHc!85^Zx*g z9vw|vPLs@v5Lrt%m`Dr30kAvZ6VknVRM2)vjHP(w4Y?;ju790*{{X~hSS_5!5=06? z#|QjR{{UXHgjMu6tqC`D`=5`0@K7xlO*`YCl4L9msydcpWEms^N#_T#A5J<~gUK7b zhs-$I4!~Qt=g9qQ>reP9XNJ6w8fX{58Bvzv)&eGT`6})}(gg>0 z(UF13JuzO68b7;Hj?3nJ<|bFIDO_ao<`AHQNdxR|b;VjHJrkYp}N8!*C>a0&--<(8dYMz5(@I|l@9o8}$Ir#)zk z(ED?wR7J z4}eQ4O2h~3DfF-vo}S*0^!2Vc;Jjlx zgr}4NQzQ~HbLrl@J9m)HF=csCACgA^00QUVwKb-qa$6T*iGI@AG6F~{qb<${I2`es z#n&c8y_t8QVh-fSTRw-{w&D?6#KlV)4o(OJeKYS^ekXR9QjR_GqwT>6xZUUo9sRxP z^lIW!XA9yNEomk`Q1WDFsmJuLZV#UQGtWHx*F&vH;=>FXi^xbMV~XeORa)$lG7fv= z70#vD>87+^r1mWFT}`m<;{=|V_Nw-(4x_=&TO1y0&6@9)Toa$KYJ$u6T96%yIpU{7 zq29~2$7*e|PFHCM80*u$MPWCWAz(6do<|iftfWozec@49Nwu3eBB~o1)&3#5qR-|^ zU6oFHbpc54fm){M$vTct&76bxxb@<)bZc+2sb*FI@r<6H^`ybUVz~Fl2GjKVR?)Xp znVJ^YM%-`AXLtdZ0N`h*Jw3&9y8XbKWIkxajl_<?J`?7*M?ze}eE`#@gGY0TVJp?6DkwcK_pk-fACTd2E1Cxk~VkyUBoenoSpEmmRo4_2Mm8q*TY^q z)5VsvG%7=EJ4weG^{=R*B`7IHpC68PsVggLb2DXCNya_8nn0oYAI_zfHugPf3aJ^v z0De`uz}XtaMn_Xhskmb}V0zTT&9-H8fzQ-bh7IZuKUxG9q!>ySY>bTdBi^dZ0gd?> z3*Q}T*omQ;K?H6jkWL5Ip2{c4&PF);)4lfsmOgbO0|WD-RSDApTBR{#<>X?ggeR0@ zmns{T&tpgmXr&vH2qU#NWaqz5J?YMVZKMxcJkcaLZ@j02p5ByP21pC2!NI1iU=Bq- z8MeMV9+c~-cAdycUtdZKif>_IDuC|JNaGbN+ya44+>UdM8mx}0oQ&d-A2GcT^P<3} z(QJV6fsVcN(yi&xD@3I7RP^XgXDMVtG4E5@U7L9ZdL9qGDJNrURU^!tk))TeZ*tkm z3UCUKn+N&kzL@_2f^2`mLNy=QhvNadnB3j?D_>-XUDMS|FasejVjuI?KWuMIuckg= z-?^4mBsOq!+N`{R3WaZ*?-PuF`l~5ZjF&4%L~72PbBoyin>-2PJwM`yhqUc$OT2>r z07lhdOPfo`8**L3>KR=doT>i+_4KZbQSj6eDU^Y|ml+vsn*5Xh0D=?$0Kq|SJ{|b# z-{9wouVWq?*X1(!ZsKWp)31-r*10_reoBslP6h*4>@&)jw&XVONXLJd)MGts%c(`h z+D}93aQLrp1unf#3t8~G%8$4qZM(9-kPo00V?QTR)1l zOGzfxwCF$5kuZMI0q+km5DgxfQ{8iOiUmn8Q* zoZ|=2O;x70we&i#_#}_V=J*r)Xn1ulWRBZS@r-TZ>$cyu1Iksc-M*6|4Ei~*-yaJ2 zk#97_SBZ%r51S;h`g)4~Uv2Is(j;4}X7cB;kWCz}IZzZj^qo>;4EMc}gd61(K$j&lI#tFxI>BT`c%+4I5tdyk%>U|@q>YiKeNMvoi zv1Hf}E0<*?24pN*NdBi3`{=;4DS^vn zvY|tIVE#4aDy}+2`X@#;5>IpEpO0U%U8lu~CxYrFSf>5wl>jZsJT^(|lh@dDTOYA! z?DU_q(rPhjH#ZELq~3g@Q}?6*D(wRR3=X{YJdD@TdY6S-<(Z_69Ow5$j4nI=ST#<| z!zRuwI-;E9H&0A`IsX7St*E!lXLPP*T63FDR&8mq)Y*8t>fa421_}wah#eQWa%_UO~@wO<=U zs83@(pb(o^4x||{*&GqT$v>5Ts`!&an({ddM=WT-;AbWMK^?2Y{x$y2_Fgkaj_wOt zlH~3JXu%47Pq!GzIpU|<&Jt6Kzn5DBp$fQnMx~c$=6rMi00fiqEtkWu+X~g$)(`DX zD(6pcpJ9CQXPMnJUuke1aZ>{L-v4BC)^xKZvJv!Ir9*g@B+k8LxgQe@* z4aL=!?wKQ8pjI+Qt}*~*Z{g<$2atWM?f(FTpB#wM;fqvhET`Bv7~^J*vELwLr>_;Q zY-B1*?OWIU&KxEJcy!|@eR>~4>iSW+T(DP9x~`{^53W5c%|0S%q9|@RD-d^W%AKT- z;m?2Tn$*(%DO%pf3_64oD>fH&fH2N8@{T_m%kj^QA-}bqBFy42azf)6_3in3(4FG0 zDvoLMBz|uH0Kr!Dxf8&;ZOVZs*|kutNx?;U-A~|2AE&i^6&vhM5lTpYP%;4nBZFV1 zzwlB!2>em-TV07#C|(5@k;XwRS|?U)5$XZ_#eQp$_bfqDihwsNG6&()iuG`lymdT0 zWi;lUw?%j-X*WtEiE-+@@$2|;MBnQ3oG(muVeOGic!4D$esxo{9DJvzTvbR}giKVf zTQ~!weRJv3w`nbz=I9a)kv_~E9oP-m@u((rMpXNVPayOs>Uw@uM281HU@M#vkCdLE zdsAiH&e_U>ImiU#u1!x%0*03&n+Op@hE>QI9X+ZOF*z(i3&t4oqt_KAz#Z(wjl-&p zel-G+V;~XE7dYj=4D_dd!`9{V9&&8Mtm&0Pg5L>0UhitT26jG1{3U z?~is)K^U5FYub&xV-b^y^XJr%Yq@q)6pl@_TwxvgZe!4wOdY z1Z45;%>?y5ezX9m9Qsik?I7UfQY!^+`K2$G`@jkSHkEKVCYNy;Tz92qB$LM+{V8xq zU~%4^yMe3W`*A(a5PaJ)j=lR2TF$uzB$Q>oRzF^~yWraums12QxoFNdjPsGjVch(e zQh){n9=&?f0yM;hM`Pe0v2Z{HXBg>KhJ23sCapRh zi?^;ZK#0RI4Y=|3;+RkF+ZiAZ^!XT+Bal0e#-c5@J>R7^1WFe@IUcmv<<0^3G`q4$ z1Faz>rU<~K16@l2k6L_7wXxR%o54N$)9lplIp>Zj1JHgA#zl?b!?G7$+w^4u-nxDN$M2xr>rcLEL*1Gt^M;Yg{>g z(V+^g7Nv_Sk`*vif%PY`>BV!NGn?%Cf;c3S9Bw0=4s*xWx(H;EtVs&38b}$*Cmy3c z`5<*Q%y`h5E}BOx!Z*#gZ#bbRVX0eVi`B_}IwO|eGDhRZ4>gCTDS4ZwM?!07TLRkB z5HJ(V$Q^$kDmgiCWb zBx9%NQAZb(svYclk?&Kb&6<}YcIqa$LtO%ny)pEv_5eM{JdT`Iood)cAmOo&GgYjK zGvslOwWL?NV_TcsU7a${t7eLfua2Y|wF2$~oQ|w9)K*TF8DhbgzI(+!&l z$OPwu?^t(IZn@qHZ?1Lh0br@mGImbhv(zI^ul12hVTmyjYxfstN{{Sz>x%*qm zVTUb}st*9+N7Ag_>Wc6o^JMb}%Aj(q^cm)<+Dh`+R%yFzK5Gb}acgymp5w1G@ zeQOU}w2M}nNYn8E@8dq0m#lP@TofyZf=qxQ(cp)<0U68Egr&1Rt{CD_&bKy;T^3wJv zLu%pBxX5_VM%;RwdJJS&&|uR`m&o~i%`R?btfL>wjIb zRPzXoq2Oa34)Kn2om&qk@#t7&|TzOP8 zNrC18!(**hx(RT;Y-ECQxM!*Lq1_EDjl4_+W56v zt$h1A`t+6Gy9=lYJ7o$!m}7KQPj;qHs#pAX;v0BGob zAhV9{(sUhTZp3zAa;!TrBeiR5cSs@O*PN9E{Kt;|_2Wrdw`1#I`I3|Bc>e&!FAs^L zZV0>iPZz7n-9-npsw&=ii3(h_GA9}v%*7T30Hg*kqK#o8mI9@lab4b=AIFX{U2HxE4H9D9 zd0>;3QNihf>r+MGV+=u;dT(s9`l#x7$o*?+CeysX5ahGGQdjMve@fHlo-NF-Q}{@1 zXX*G>-KC4j=%-^In@G;yFh7~9dNf8P0e~wQz+l+pJu&!yI^T-jmkf-`S$7Z@8-2O1 zN|dduMwIGbOEHk>aa_ir5K00HvXQ&jpr&em8HuHhVpNe^k^tj(z&ndZ&jYVUUZwjNw#d zpHYhHVzWUctXF6NmBH>ri@aT~dH$o}6^C&P zjl*D8=*RpxtPN-3%4!fc@J{YqdXbOF`;Vo1+}cLY7kjHN3t)}kkMyXUM2_J}Az74U z1l;1Z}%$M#1&qaro6G_kPENY^JQm}@ z?`)3KN44b6Uvc4kayoba03ItlS)WoGLnJr13d@ic*vPCv#tCk{x|;T{5O{LcP=tvk z2Y>+iRGyuBeQSmBCxwzIRhtkYJP--*o<~FJnwnJAyo~D0nLBhoJN=~mF|2EPP25qj zK6<)fxj^Ft5sc$J`6xwhc}ja|pRsj$l)0+!&QRusY=Q&rfRfaI&-Y zJZydr^!d}(J-;);ZXIKUgTTPt+q&bmM#>eLqhh@_TK4UJVK3T~5!N%YL0Qw53;Nx*$lO;(0FUF+09$Srsobi+E z_3u#6GVLLWW(Om0A-@_4WN(E>*Z^GZN0sPc+w=kxm$f zJhwo;^yUd{%v7-zyW%2cuxAX7oFb0+ z108D~1$eaG#c_aeb6B^!I}}~xao!h!XS|at#18oBP)jG3thZB#BDFjLW^ZopTPmk# z2RH_^uFDN&^M`Hx`_fXp+BB6v_IOn8*qYK2Fl>^{Dy5;#%H-oc&1h?Dl!y_xjOW&~ zpr^ZdtXTwde}~qz7ABee zyychylfWjfJ6Oi1?&I~l12u)5g&*fbyyud0j-Q`3iq@?jHj{vO&pg+A{gicY3pAcc z%C6LWal-Ti>U!5J9+V=IFv~zJ{)aX(iRP0D&Vh*q|Pr@mt>x z-EF)|A!$}GG_!(0=L09NekzBD)Wc)tf~ODWEv^t$gdk$zE68-1@auMMqS$+ke1f=+aI$Ng~EvkTT@)^y`|IxP_V!)j9{Gq0H4;d zwO-MjsE~{e}^pADR#bGscRvJ%?ua_Ta_6DAO=qjHc7dzX$#?k&{pcw}6O6B+2IV{_G55O}Xc3wXY1 z9&R?2Wd@)0&&kgbXlnXRrQ0eKBbAVW+zy_-59wTG{fV@n1f7lYoMR)LXa4}LUdQAA z00<_LZ*yr2vpt)w(y2h7Uzglx@I5QeJYQy#UPmNfAeu110l*;h^{-_#^+(EUvoKZ? z(6Cj*#@HmE=~7!-T{bdQ!2<*kOj`splE0ceqoYbJP=3z^y3x^T!-wm`3Fw zV;=P^dt^90Pfu||Dz5GZ>U>a*Cc z*rk>=>O#2y)p8539TuHzo8%tn98-*(UDL3dPey7-;=Mv53SZphai23hXE^-@SWg=2 zXYXA3neONq@%8?d=%2FZ?3=BA)7~t)wA1|9G~Fg8pHjO>yw4?Bu&9Hfk+9euFr=Q9 z^;Nh06AQyW3brqI2BWF6fTmlSO9m$#g+LT~V;#>XuBK^LlV1D3t35mpNmm%X)ROMc zhf~M$Oq(t&H2bhQ1jV(N@~20sXxfa-CAPTJ%P{2|%vAL~tL>Zr0N5|X7Z6DddRz%E z&1U z64mCmnP;%SvvQIl%1Ijz-~D>pvhfYSjGyem+C8?i?QA z`WmKfndUr@2W;1!IufNP3Fywb;yt8OiTY#z00bQUx6XyCYM%!6>y!3d{{S~u@Z-B2 zMJQd@Hp3m9e)M+A$!$M5vvjNFas;cudQyUn}L=f4n0eKDUq1wPnZB#fWbE4@_!nIR_e`MIsNWf^*Ps# zEv`UjU5A{p+Eo5Mt3ycC5_rfCNkPW|-UkDr>5eO&)NN+8bdoaY z%Yqs)g1-L$07}nCw#bP-Tej|XNvA&k4l(l}UI62${Az0w%Z=Vjp!?goB>NuUkF9gj z_}=SHBkdOLa3jKoKm#!M=hxb{^bZkQYZByUIY{LgbUwa^@TpU6I~lpQx7fdH8IWWq zbHUHv{{T6rwXXTgIlx8e?e+V(@1I)I5hS3H2Y3Mw{ip6oxJc0Q4Y=e(2gJ zAOhIhR|K|w4?SyGXs(4;ZF{lM%9=RcRFvGz0R)kT=dJ+ttj$?fSgJZMlsJG)z0c382KGtkgrf=U#>v*=hld&D7zQR zqLi88zCY6AyH+AOJjFTra7$x70Uo4R!r$;wFNgA6d_TRv6D*(EyIiSI#PhV{fO0ni zPd)uB^moR78I~~Yi}J>~kS-hF#lu-2D8JuBKHCRrnkX5u*H;PF+Ao>Q?#1a}~32CSL< z$pI`xc;trVzs9P(Pc)652sz2dNc!=|;X?Bh7}1vj%K}tkyJnjs0(Ng;gZM|Uy*R{W z&d^+`#~A%-42N=)$X0QNQmD5kVVRoSbHm4>7y+phCu{29+>S=czrY1Ot#k_N5qA zIUeGG6Q`l{G^j^803TXtRv5@Q=}uKFe&{2;07}jK!f-|@=z-(j+lU>iHyC}PMo+C- zLJ+9QI2{1%#V|b!;kBK`o}p`Spfbs9(Vz{<83d^Vuh4=Ga9YX%tlbmA^PI3fN6dQH z*I%<|!D#$vb>R3US4F+k+{c5WXq~PPz6>$geIUI_oJ7!Gt%@-_dazO1sAaRW1lXp45 zz^6vSLO~e7?MP@qTWQa&J#oAYXD0@l0Vkz7G8_UvQPzUAErJAt?|M{@xX19EW7mp? z7Q~s{aC&-F?wcQ;htrA)XpUj~u)CDt{xt-W7Rl!x^(6ZUED0R&0L?`!;0}k@gv2x) zp1e~Gg;@3cDMNB_I{MHKRN(WP0BJeuGg8_x4tV3zm@o$;K8MzwY#EyzVt_qQz|pGs zPSoy@1WbZg3Uiakt!wyjIn!g1C}vayk`7sOlkLVo`qh`=WMknAb%{VP0BywXQP-!T z&1mT=>tL)l`D_3z56nj#jz2nX$=G*B&9G^05<@2evQuu{fO`S`Yl!%f7+c7ZBRrh8 z4-Un>JAEs#w*?~sNo*3~h7`Uzr>3D4j(1(R z15Ic7_wU9_a8IYbX5PkP(g`GT03h|PuMq}aGAP+XlHjo;8SFnS)=!8~K?cm^H%>oX z*ED3>J&Lq>Z+?+Q?}r6`*FH<<%l;m3OiarN479KT*NuU$MrN7!4 zbHt0g9P$q*wt1>{`pCEwE4um61xZ-3Y^cEmbO)Xf9Y?);2kcGZ{WHYh5F!^APA9w6 ztYg9fED};v zcHuIs1AqX)+mrRiF<(P`KK-XW4e?UO-|X6*s?9%0ABh_yk&fr-k~psw_?Q0x1mp1M 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%0AUL{qMQ;Kg~mswKML`G8fg>UUj3FR;&_Pwka8UM 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%0Aa~u;o4ax9Koo>DlexJBpIU50 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 literal 0 HcmV?d00001 diff --git a/cat.jfif b/sample.jpg similarity index 100% rename from cat.jfif rename to sample.jpg