-
Haar Cascadeを使用した物体検出: Haar Cascadeは、画像内の特定のパターンやオブジェクトを検出するための一般的な手法です。以下は、OpenCVを使用してHaar Cascadeを使用した物体検出を行う基本的なコード例です。
import cv2 # Haar Cascadeの読み込み cascade = cv2.CascadeClassifier('path/to/haarcascade.xml') # 画像の読み込み image = cv2.imread('path/to/image.jpg') # 物体検出の実行 objects = cascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) # 検出された物体の座標を表示 for (x, y, w, h) in objects: cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2) # 結果の表示 cv2.imshow('Objects Detected', image) cv2.waitKey(0) cv2.destroyAllWindows()
-
TensorFlowを使用した物体検出: OpenCVだけでなく、TensorFlowを使用して物体検出を行うこともできます。以下は、TensorFlow Object Detection APIを使用した物体検出のコード例です。
import cv2 import tensorflow as tf from object_detection.utils import label_map_util from object_detection.utils import visualization_utils as viz_utils # モデルとラベルの読み込み model_path = 'path/to/model.pb' label_map_path = 'path/to/label_map.pbtxt' category_index = label_map_util.create_category_index_from_labelmap(label_map_path) # モデルの読み込み detection_model = tf.saved_model.load(model_path) # 画像の読み込み image = cv2.imread('path/to/image.jpg') # 物体検出の実行 input_tensor = tf.convert_to_tensor(image) input_tensor = input_tensor[tf.newaxis, ...] detections = detection_model(input_tensor) # 検出結果の可視化 viz_utils.visualize_boxes_and_labels_on_image_array( image, detections['detection_boxes'][0].numpy(), detections['detection_classes'][0].numpy().astype(int), detections['detection_scores'][0].numpy(), category_index, use_normalized_coordinates=True, max_boxes_to_draw=200, min_score_thresh=0.5, agnostic_mode=False) # 結果の表示 cv2.imshow('Objects Detected', image) cv2.waitKey(0) cv2.destroyAllWindows()