投稿日:2024年12月23日

PythonでのOpenCVの使い方

PythonでのOpenCVの導入と基本的な使い方

製造業において、画像処理技術は品質管理や製造プロセスの最適化といったさまざまな場面で重要な役割を果たします。
特にOpenCVは、コンピュータビジョンのライブラリとして非常に広く使われています。
この記事では、PythonでOpenCVを使用するための基本的な手順と実際の応用例について解説します。

OpenCVとは

OpenCV(Open Source Computer Vision Library)は、リアルタイムのコンピュータビジョン用に設計されたオープンソースのライブラリです。
画像処理、顔認識、物体追跡、3Dモデリングなど多様な機能を持ち、幅広く利用されています。
製造業では、製品の外観検査やラインモニタリングなどでの利用が多く見られます。

PythonでOpenCVを始めるには

PythonでOpenCVを使用するためのステップは簡単です。
まず、Python環境を用意し、パッケージ管理ツールであるpipを使ってOpenCVをインストールします。
以下のコマンドでインストールが可能です。

“`bash
pip install opencv-python
pip install opencv-python-headless # GUI不要の場合
“`

画像の読み込みと表示

OpenCVの基本は画像の読み込みと表示です。
次のコードでは、既存の画像ファイルを読み込み、ウィンドウに表示する方法を示します。

“`python
import cv2

# 画像の読み込み
image = cv2.imread(‘example.jpg’)

# 画像の表示
cv2.imshow(‘Display window’, image)

# キー入力待ち
cv2.waitKey(0)

# ウィンドウ終了
cv2.destroyAllWindows()
“`

これにより、指定した画像ファイルがウィンドウに表示され、任意のキーが押されるまでウィンドウが開いたままになります。

画像の基本的な操作

画像を扱う際、さまざまな操作を行うことが求められます。
そのため、OpenCVの基本的な画像操作方法について理解しておくことが重要です。

リサイズとトリミング

画像のサイズ変更(リサイズ)は頻繁に必要とされる操作です。
以下のコードは、リサイズとトリミングを行う方法です。

“`python
# 画像のリサイズ
resized_image = cv2.resize(image, (width, height))

# 画像のトリミング(ROI: Region of Interest)
roi = image[startY:endY, startX:endX]
“`

リサイズでは新たな幅と高さを指定し、トリミングでは開始点と終了点を指定します。

画像の回転と反転

回転や反転は視覚的な解析やデータ拡張のために使用されます。

“`python
# 画像の回転
rotated_image = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)

# 画像の反転
flipped_image = cv2.flip(image, flipCode=1) # 正の値で水平反転
“`

回転では方向を指定し、flipCodeの値によって水平または垂直の反転が選択できます。

OpenCVの深層技術

基本的な使い方を理解したら、OpenCVのより高度な技術に目を向けることも重要です。
これには、フィルタリングやエッジ検出、特徴量抽出などが含まれます。

フィルタリングとエッジ検出

フィルタリングを駆使することで画像から不要なノイズを除去できます。
また、エッジ検出は物体の輪郭抽出に非常に効果的です。

ガウシアンブラー

ガウシアンブラーは最もポピュラーなフィルタリング技法の一つです。

“`python
# ガウシアンブラー
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)
“`

これにより、画像がスムーズになります。

Cannyエッジ検出

Cannyエッジ検出は、などるべく精密なエッジを得るための古典的な方法です。

“`python
# Canny エッジ検出
edges = cv2.Canny(image, 100, 200)
“`

これにより、画像内の重要なエッジが強調されます。

特徴量の抽出とマッチング

特徴量抽出は、画像中の重要なポイントを特定し、それを基に物体の識別を行います。

SIFT

SIFT(Scale-Invariant Feature Transform)は、画像のスケールに依存しない特徴量を抽出するためのアルゴリズムです。

“`python
# SIFTの使用
sift = cv2.SIFT_create()
keypoints, descriptors = sift.detectAndCompute(image, None)
“`

テクスチャや形状が異なっても一致点を見つけ出すことができます。

特徴量マッチング

特徴量のマッチングは、異なる画像間での類似性を見つけるために使用されます。

“`python
# 特徴量マッチャーの作成
bf = cv2.BFMatcher(cv2.NORM_L2, crossCheck=True)
matches = bf.match(descriptors1, descriptors2)

# マッチ結果のソート
matches = sorted(matches, key=lambda x: x.distance)
“`

これにより、最も類似した特徴量を持つ点同士を関連付けることができます。

製造業におけるOpenCVの応用

製造業の現場では、OpenCVを用いた画像処理が多くの場面で実用化されています。

品質管理での利用

画像処理技術は自動化された品質管理の中で非常に重要です。
OpenCVを使用することで、製品の欠陥を迅速に検出し、製品の一貫性を確保するための重要なツールとなります。

自動化されたプロセスモニタリング

生産ラインのモニタリングに画像処理を組み合わせることで、リアルタイムでの動作監視や異常の検出が可能です。
カメラを使用して生産ライン上の動きを追跡し、ソフトウェアで異常を検出・通報することがスムーズに行えます。

まとめ

PythonでのOpenCVの使用方法を身につけることで、たくさんの場面でその威力を存分に発揮できます。
OpenCVは製造業に特化したアプリケーションの作成にも柔軟に対応でき、視覚的情報を用いたデータ収集と解析の進化を促します。
もしさらに効率を上げる方法を模索中であれば、OpenCVの利用は非常に有効な手段となるでしょう。

資料ダウンロード

QCD調達購買管理クラウド「newji」は、調達購買部門で必要なQCD管理全てを備えた、現場特化型兼クラウド型の今世紀最高の購買管理システムとなります。

ユーザー登録

調達購買業務の効率化だけでなく、システムを導入することで、コスト削減や製品・資材のステータス可視化のほか、属人化していた購買情報の共有化による内部不正防止や統制にも役立ちます。

NEWJI DX

製造業に特化したデジタルトランスフォーメーション(DX)の実現を目指す請負開発型のコンサルティングサービスです。AI、iPaaS、および先端の技術を駆使して、製造プロセスの効率化、業務効率化、チームワーク強化、コスト削減、品質向上を実現します。このサービスは、製造業の課題を深く理解し、それに対する最適なデジタルソリューションを提供することで、企業が持続的な成長とイノベーションを達成できるようサポートします。

オンライン講座

製造業、主に購買・調達部門にお勤めの方々に向けた情報を配信しております。
新任の方やベテランの方、管理職を対象とした幅広いコンテンツをご用意しております。

お問い合わせ

コストダウンが利益に直結する術だと理解していても、なかなか前に進めることができない状況。そんな時は、newjiのコストダウン自動化機能で大きく利益貢献しよう!
(Β版非公開)

You cannot copy content of this page