OpenCV

画像 / 動画を処理するためのオープンソースライブラリ。コンピュータビジョンの定番

画像処理コンピュータビジョン
OpenCV」の技術書を見る →

OpenCV とは

OpenCV (Open Source Computer Vision Library) は、画像や動画を処理するためのオープンソースライブラリだ。画像の読み込み・変換・解析から、輪郭や顔の検出、動画の連続処理まで、コンピュータビジョン (コンピュータに視覚的な情報を扱わせる技術) の広い範囲を 1 つのライブラリで賄える。もともとは 1999 年に Intel の研究部門の取り組みとして正式に発足したプロジェクトで、最初のアルファ版は 2000 年の IEEE CVPR で公開された。C++ を本体としつつ Python から扱う形が広く使われている。

できること

機能
画像処理リサイズ、フィルタ、色変換
特徴検出輪郭・角・顔の検出
物体追跡動画中の対象を追う
機械学習連携学習モデルと組み合わせた認識

これらが 1 つのライブラリに同居している意味は、機能の数より受け渡しの形にある。どの処理も画素の並んだ同じ形式の配列を受け取って配列を返すため、前処理・検出・結果の描画をつなぐときに形式変換のコードがほとんど要らない。途中の配列をそのまま画像として保存できるので、期待と違う結果が出たときにどの段で崩れたかを目で追える。

歩みと開発体制

時期出来事
1999 年Intel の研究の取り組みとして正式発足
2000 年IEEE CVPR で最初のアルファ版を公開
2006 年バージョン 1.0
2009 年 10 月2 系で API を大きく変更
2012 年 8 月非営利団体 OpenCV.org が支援を引き継ぐ

開発の担い手は一貫していない。Intel から始まり、ロボット研究の Willow Garage、そこから独立した Itseez が支えた時期があり、Itseez は 2016 年 5 月に Intel が買収することで合意している。運営面では 2012 年 8 月に非営利団体 OpenCV.org が支援を引き継ぎ、開発者と利用者に向けたサイトの運営を担うようになった。20 年以上にわたって主体が入れ替わりながら開発が続いている点が、この分野のライブラリとしては珍しい。

ライセンスとバージョンの読み方

ライセンスは途中で変わっている。4.5.0 以降は Apache License 2.0 で、4.4.0 までは 3-clause BSD をもとにした独自の License Agreement だった。どちらも商用利用を許す系統だが、特許に関する条項の扱いが違うため、社内で採用の審査にかけるときは「使うバージョンに同梱されているライセンスファイル」を見るのが正しい。古い記事のライセンス表記をそのまま信じないほうがよい。

バージョン系列も 1 本ではない。2026 年 8 月時点では 4 系 (4.14.0・2026 年 7 月) と 5 系 (5.0.0・2026 年 6 月) の双方が公開されており、参照する記事やサンプルがどちらを前提にしているかで関数名や既定の挙動が変わり得る。動かないコードに当たったら、まず前提バージョンを疑うのが早い。

最初につまずく約束事

Python から使うとき最初に踏むのが色の順序だ。カラー画像を読み込むと、チャンネルは赤・緑・青ではなく B G R の順に格納される。この並びのまま他の画像ライブラリや描画ツールへ渡すと、青と赤が入れ替わった画像が出る。原因を知らないと「色がおかしい」だけが手がかりになるため、診断に時間を取られやすい。

import cv2

bgr = cv2.imread("input.jpg")                         # 既定は 3 チャンネル・BGR 順
rgb = cv2.cvtColor(bgr, cv2.COLOR_BGR2RGB)            # 他ライブラリへ渡す前に並べ替える
gray = cv2.imread("input.jpg", cv2.IMREAD_GRAYSCALE)  # 読み込み時に 1 チャンネルへ

読み込み時に並びを指定する IMREAD_COLOR_RGB も用意されているが、BGR を指定するフラグとは同時に立てられない。どちらの流儀で通すかをプロジェクトで決めておくと、変換の入れ忘れが減る。

どこで使われるか

製造業の外観検査、監視カメラの解析、医療画像の処理、自動運転の周辺技術、AR アプリなど、画像・映像を扱う現場で広く使われている。共通するのは、判定そのものより前後の工程が重いという構図だ。撮影条件のばらつきを揃える、対象の位置を切り出す、判定結果を人が見る形で重ねて描く。こうした工程は認識手法が新しくなっても消えないため、OpenCV の役割も残り続ける。

深層学習との役割分担

高度な認識は ディープラーニング が担うことが多く、OpenCV はその前後を固める道具として使う場面が増えた。切り分けの目安は、規則で書けるかどうかだ。明るさの補正・切り出し・座標変換のように手順として書ける処理は OpenCV 側に置き、大量の例から基準を学ばせたい判定は 機械学習 のモデルへ渡す。前処理を学習モデルに肩代わりさせると、学習データを増やしても精度が伸びない原因の切り分けができなくなる。

効果的に使うには、色空間・フィルタ・座標系といった画像処理の基礎概念を押さえておく必要がある。関数を呼ぶだけでは、期待通りの結果が得られない理由を診断できない。

どこから手を付けるか

手元の写真 1 枚で、読み込み・グレースケール化・リサイズ・保存の 4 手を通すのが最短だ。次に輪郭検出をかけて、しきい値を変えながら結果を毎回書き出して比べる。ここで「入力の明るさが揃っていないと同じしきい値が通用しない」ことを体感できると、実務で最初に作るべきものが前処理だと分かる。学習モデルの導入を考えるのはその後でよい。

この記事は役に立ちましたか?

関連用語

関連する記事