- お役立ち記事
- PythonでのOpenCVの使い方
PythonでのOpenCVの使い方
目次
PythonとOpenCV:はじめに
Pythonは、シンプルで理解しやすく、かつ強力なプログラミング言語として知られています。
そのため、多くの技術領域で採用され、特に機械学習や画像処理においては重要な役割を果たしています。
OpenCVは、リアルタイムでの画像処理を可能にするオープンソースのライブラリであり、その際立った性能と柔軟性から広く使われています。
本記事では、製造業の現場においても役立つPythonとOpenCVの基本的な使い方を紹介します。
ここでは、デジタル技術を製造業の現場で活用するためのラテラルシンキングを行い、効率化や新しいプロセスの導入を支援する知識を得ることを目指します。
OpenCVのインストールと基本設定
OpenCVをPythonで利用するためには、まずライブラリのインストールが必要です。
Pythonのパッケージ管理システムであるpipを使用するのが一般的です。
以下のコマンドをターミナルまたはコマンドプロンプトで実行することで、OpenCVをインストールできます。
“`
pip install opencv-python
“`
インストールが完了したら、次に進む前に環境を確認しましょう。
Pythonのインタープリタを起動し、OpenCVが正しくインストールされているかを確認するために次のコードを実行します。
“`python
import cv2
print(cv2.__version__)
“`
このコードを実行してエラーが出ない場合、OpenCVのインストールは正常です。
これでPythonを使ったOpenCVの環境が整いました。
画像の読み込みと表示
OpenCVを使った基本的な操作として、まずは画像の読み込みと表示の方法を学びましょう。
以下の例では、画像ファイルを読み込んでウィンドウに表示する方法を示します。
“`python
import cv2
# 画像を読み込む
image = cv2.imread(‘path_to_image.jpg’)
# 画像をウィンドウに表示
cv2.imshow(‘Display window’, image)
# キー入力があるまでウィンドウを表示
cv2.waitKey(0)
# ウィンドウを閉じる
cv2.destroyAllWindows()
“`
このコードは、指定したパスから画像を読み込み、ウィンドウに表示した後、任意のキーが押されるまでウィンドウを保持します。
最後に`cv2.destroyAllWindows()`を呼び出すことで、開いたウィンドウをすべて閉じます。
画像の形式とカラーモード
OpenCVで画像を扱う際に重要なのは、画像の形式とカラーモードです。
OpenCVはBGR(Blue, Green, Red)の色順で画像を扱うため、他のライブラリとは色の扱われ方が異なることがあります。
特に、Matplotlibなどで表示する場合はRGBに変換する必要があります。
“`python
# BGRからRGBへ変換
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
“`
こうした基本的な知識を持つことで、OpenCVを用いた画像処理の幅が広がります。
画像処理の基本操作
OpenCVを使用すれば、簡単に画像の加工やフィルターの適用が可能です。
ここではいくつかの基本的な画像処理の操作について紹介します。
画像のリサイズとトリミング
製造現場における画像データの取扱いでは、画像サイズの調整が必要になることがあります。
以下のサンプルコードでは、画像のリサイズとトリミング方法を示します。
“`python
# 画像のリサイズ
image_resized = cv2.resize(image, (width, height))
# 画像のトリミング
x, y, w, h = 100, 100, 200, 200
image_cropped = image[y:y+h, x:x+w]
“`
これらの操作により、作業に適したサイズの画像を得ることができます。
色空間の変換
製造業の品質管理において、色空間の変換は欠かせない技術です。
OpenCVでよく使用される色空間変換には、RGBからグレースケールへの変換があります。
“`python
# RGBからグレースケールへの変換
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
“`
グレースケールに変換することで、色の情報を排除し、形状や濃淡に基づいて画像を解析しやすくします。
エッジ検出と物体認識
製造ラインでの検査には、パターンやエッジの検出が含まれることが多いです。
OpenCVを利用することで、効果的なエッジ検出を行うことができます。
Cannyによるエッジ検出
エッジ検出の一つとして、Cannyアルゴリズムがよく用いられます。
このエッジ検出を用いると、画像中のエッジや特徴を明確にすることが可能です。
“`python
# グレースケール変換
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Cannyエッジ検出
edges = cv2.Canny(image_gray, threshold1=100, threshold2=200)
“`
エッジの情報から製品の欠陥や形状の確認が可能となり、品質管理を厳密に行う助けとなります。
OpenCVでの応用と自動化
ここまでに学んだ基礎技術を応用し、製造業の自動化に寄与するシステムを構築することができます。
例えば、ベルトコンベアを流れる製品をカメラで撮影し、リアルタイムで画像処理を行うことで、品質異常の自動検出を実現できます。
リアルタイム画像処理
OpenCVはリアルタイム画像処理をサポートしており、キャプチャーデバイスから直接画像を取得して処理することが可能です。
“`python
import cv2
# カメラデバイスの設定
cap = cv2.VideoCapture(0)
while True:
# フレームをキャプチャ
ret, frame = cap.read()
# グレースケールに変換
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# エッジ検出
edges = cv2.Canny(gray_frame, threshold1=50, threshold2=150)
# フレームを表示
cv2.imshow(‘Edges’, edges)
# ‘q’キーでループ終了
if cv2.waitKey(1) & 0xFF == ord(‘q’):
break
# すべてを解放
cap.release()
cv2.destroyAllWindows()
“`
このコードは、ウェブカメラなどのキャプチャーデバイスから映像を取得し、リアルタイムでエッジ検出を行います。
製造ラインの監視や異常検出に活用することも視野に入れられます。
今後の展望とディープラーニングへの発展
OpenCVは加速度的に進化しており、AIと組み合わせた高度な画像処理が可能になっています。
将来的には、ディープラーニングとの統合により、さらに精度の高い画像認識や分類が期待されます。
製造業では今後、現場の自動化や効率化を一層進めるために、AIベースの画像処理の導入が必須となってくるでしょう。
その意味で、PythonとOpenCVを駆使したシステム構築は、製造業の発展に大きく貢献するものと考えます。
製造業における皆さんがこれからのデジタル時代に向けて一歩先を行くために、本記事が役立つことを願っています。
資料ダウンロード
QCD調達購買管理クラウド「newji」は、調達購買部門で必要なQCD管理全てを備えた、現場特化型兼クラウド型の今世紀最高の購買管理システムとなります。
ユーザー登録
調達購買業務の効率化だけでなく、システムを導入することで、コスト削減や製品・資材のステータス可視化のほか、属人化していた購買情報の共有化による内部不正防止や統制にも役立ちます。
NEWJI DX
製造業に特化したデジタルトランスフォーメーション(DX)の実現を目指す請負開発型のコンサルティングサービスです。AI、iPaaS、および先端の技術を駆使して、製造プロセスの効率化、業務効率化、チームワーク強化、コスト削減、品質向上を実現します。このサービスは、製造業の課題を深く理解し、それに対する最適なデジタルソリューションを提供することで、企業が持続的な成長とイノベーションを達成できるようサポートします。
オンライン講座
製造業、主に購買・調達部門にお勤めの方々に向けた情報を配信しております。
新任の方やベテランの方、管理職を対象とした幅広いコンテンツをご用意しております。
お問い合わせ
コストダウンが利益に直結する術だと理解していても、なかなか前に進めることができない状況。そんな時は、newjiのコストダウン自動化機能で大きく利益貢献しよう!
(Β版非公開)