Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

OpenCV

OpenCVは、画像処理とコンピュータービジョン向けの2,500種類以上のアルゴリズムを備えたオープンソースライブラリです。その機能、ディープラーニングとの連携方法、コードを紹介します。

OpenCV(オープンソースコンピュータービジョンライブラリ)は、画像処理とコンピュータービジョン(CV)向けの最適化アルゴリズムを2,500種類以上備えたオープンソースライブラリです。画像や動画の読み書き、カメラストリームの取り込み、ピクセルのフィルタリングや変換、特徴の検出とマッチング、カメラのキャリブレーション、学習済みニューラルネットワークの実行ができます。OpenCVは1999年にIntel Researchで始まり、C++で記述され、PythonとJavaのバインディングを備えています。バージョン4.5.0以降はApache 2.0ライセンスで配布されています。Pythonではpip install opencv-pythonでインストールし、cv2としてインポートします。また、すべての画像をNumPy配列として扱います。

OpenCVでできること#

  • 画像・動画の入出力: 一般的な画像フォーマットの読み書き、動画ファイルのデコード、カメラやネットワークストリームからのフレーム取得ができます。
  • 画像処理: リサイズ、色空間変換、ぼかし、シャープ化、しきい値処理、モルフォロジー演算など、画像をモデルに入力する前の標準的な前処理を行います。
  • 特徴の検出とマッチング: SIFTやORBなどのコーナー・キーポイント検出器で特徴的な点を見つけます。これらの点を画像間でマッチングし、パノラマ画像の合成、物体の位置推定、ビジュアルSLAMに利用できます。SIFTは特許の有効期限が切れた後、バージョン4.4.0でメインライブラリに加わりました。
  • カメラ幾何: キャリブレーションでレンズの歪みを除去し、ホモグラフィーで遠近法を補正します。また、ステレオマッチングでは2台のカメラから深度を復元し、ロボティクスや3D再構築に利用します。
  • 動画解析: 背景差分で静止したシーンから動く物体を分離し、オプティカルフローでフレーム間のピクセルの動きを測定します。
  • ディープニューラルネットワークの推論: dnnモジュールは、たとえばONNX形式の学習済みモデルを読み込み、ディープラーニングフレームワークをインストールせずにCPUまたはGPUで実行します。

この従来型のパイプラインは、学習済みモデルを使わずに画像内の形状の輪郭を検出します。

import urllib.request

import cv2
import numpy as np

# Download a sample image and decode it into a BGR NumPy array
data = urllib.request.urlopen("https://ultralytics.com/images/bus.jpg").read()
image = cv2.imdecode(np.frombuffer(data, np.uint8), cv2.IMREAD_COLOR)

# Classical pipeline: grayscale, blur to suppress noise, then Canny edge detection
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
edges = cv2.Canny(blurred, 50, 150)

# Trace connected edge pixels into contours, the outlines of shapes in the scene
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
print(f"Image shape: {image.shape}, contours found: {len(contours)}")

Image shape: (1080, 810, 3), contours found: 1449が出力されます。これは3つのカラーチャンネルを持つ1080×810の画像と、そのエッジから抽出した1,449個の個別の輪郭です。OpenCVではカラーチャンネルが青・緑・赤(BGR)の順に格納されるため、RGBを想定するライブラリに画像を渡す前にcv2.cvtColorで変換する必要があります。

OpenCVとディープラーニングフレームワーク#

OpenCVとPyTorch、TensorFlowなどのディープラーニングフレームワークは、同じパイプラインの異なる段階を担います。OpenCVはデータの前処理とネットワーク出力後の処理を担当し、フレームの取得、リサイズ、結果の描画、出力動画の書き込みを行います。その間で、フレームワークが畳み込みニューラルネットワークを学習・実行します。リアルタイム動画アプリケーションでは、各フレームについて次の処理を繰り返します。

Ultralytics YOLO26は、OpenCVのBGR形式のNumPyフレームをそのまま受け付け、results[0].plot()は同じ形式の注釈付きフレームを返すため、変換なしでOpenCVのループにモデルを組み込めます。この例では、ultralyticsパッケージに同梱されたサンプル画像を使って、ループを1回実行します。

import cv2
from ultralytics import YOLO
from ultralytics.utils import ASSETS

# OpenCVは同梱されたサンプル画像をBGR形式のNumPy配列として読み込みます
frame = cv2.imread(str(ASSETS / "bus.jpg"))

# YOLO26はOpenCVのフレームをそのまま受け取ります
model = YOLO("yolo26n.pt")
results = model(frame)

# plot()は、OpenCVで表示または保存できる注釈付きBGR配列を返します
annotated = results[0].plot()
cv2.imwrite("bus_annotated.jpg", annotated)

動画ループ内では、cv2.VideoCaptureからの各フレームに対して同じ3つの呼び出しを実行し、cv2.imshowまたはcv2.VideoWriterがcv2.imwriteを置き換えます。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう