opencvによる車線境界線検出 (1) opncvのインストールと基本機能の使い方


序文

` opencv を選択する理由:
OpenCV は、幅広い画像処理およびコンピュータ ビジョン機能を提供するオープン ソースのコンピュータ ビジョン ライブラリです。C++、Python などの複数のプログラミング言語をサポートしており、プラットフォーム間で使用できます。
OpenCV は、グレースケール、スムージング、エッジ検出、ハフ変換など、車線境界線検出のための多くの機能とツールを提供します。これらの機能を組み合わせることで、効果的な車線検出アルゴリズムを実現できます。
OpenCV には、ユーザーがすぐに使い始めて独自の車線検出プログラムの構築を開始できるようにするいくつかのサンプル コードとチュートリアルも提供されています。さらに、OpenCV には、ユーザーがサポートやフィードバックを得られるアクティブなコミュニティがあります。
要約すると、OpenCV は、車線検出やその他の画像処理タスクの実装に使用できる非常に強力なコンピューター ビジョン ライブラリです。OpenCV の基本的な機能とアルゴリズムに習熟すると、効率的で正確な車線検出プログラムを構築するのに役立ちます。

初心者として、ここでは opencv ライブラリをインストールすることから始めます。
前提条件: Windows 10 システムに
      Python と Pycharm がインストールされている

1.OpenCVのインストール

   まず、win+R を入力し、 cmd を入力してターミナルを開きます (ここでは Python 環境がインストールされているものとします)、pip install opencv-python と入力すると、システムが自動的にインストールされます。このプロセスは比較的長く、約 5 分かかります。をクリックすると、インストールは成功します。(私はここで直接ダウンロードしました。ダウンロード速度が遅いために失敗した場合は、国内のミラーソースを検索してダウンロードすることをお勧めします。)

   pycharm を開き、新しいプロジェクトを作成し、次のコードを使用してインストールが成功したかどうかを確認します。

import cv2
print(cv2.__version__)

結果は次のようになります。
ここに画像の説明を挿入
これは、バージョン情報が正しいことを意味します。
しかし!
一日中私を悩ませている問題がまだ一つあります。
cv2. を使用すると、コンパイラは後続のコードを自動的に完成させず、手動で cv2.imread() を入力すると、Ctrl + マウスの左ボタンで関数の説明にジャンプできません。
したがって、私は次のような多くの解決策を参照します。
1. pycharm の file-settings-compiler で、インストールされている cv2 パスをインポートします。
2. ルート ディレクトリにある cv2.pyd を上位ファイル site-packages に置きます。しかし、それらはすべて失敗し、最終的に、これは2023 年 4 月の opencv バージョンが新しすぎて、pycharm バージョンと互換性がないことが
原因のようであることがわかり、解決策を見つけました。

opencv バージョンをバージョン 3.4 にロールバックします。

まず、win+R を押して cmd を入力してターミナルを開きます (ここではデフォルトで Python 環境がインストールされています)。pip install opencv-python==と入力すると、以前のバージョン番号が表示されます。
ここに画像の説明を挿入
次に、バージョン 3.4 を選択します。 3.4.10.35,
enter pip install opencv-python==3.4.10.35 :
ここに画像の説明を挿入
次に、pycharm を開くと、cv2 が表示され、その後コードが正常に完了し、ジャンプ ビューがサポートされます。

2. 画像の読み取り、表示、保存

1.cv2.imread

cv2.imread は、OpenCV ライブラリ内のイメージを読み取るための関数であり、ローカル ファイル システムからイメージを読み取り、メモリにロードできます。

cv2.imread の構文は次のとおりです。

cv2.imread(filename, flags)
ここで、filename は読み取るイメージ ファイル名 (パスを含む) で、flags はイメージの読み取り方法を指定するオプションのパラメーターです。

可能なフラグには次のものがあります:
cv2.IMREAD_COLOR、これはイメージをカラー モードで読み取ることを意味します。
cv2.IMREAD_GRAYSCALE: グレースケール モードで画像を読み取ります。
cv2.IMREAD_UNCHANGED: アルファ チャネルを含む画像を raw モードで読み取ります。

たとえば、次のコードは、cv2.imread を使用してカラー イメージを読み取る方法を示しています。

import cv2

img = cv2.imread('test.jpg', cv2.IMREAD_COLOR)

このコードは、「test.jpg」という名前の画像をローカル ファイル システムから読み取り、NumPy 配列として読み込みます。ファイルが存在しない場合、またはファイルの形式が正しくない場合は、空の配列が返されることに注意してください。

2.cv2.imshow

cv2.imshowは、画像データをウィンドウ内に表示できるOpenCVライブラリの画像を表示するための関数です。

cv2.imshow の構文は次のとおりです。

cv2.imshow(winname, mat)
ここで、winname はウィンドウ名、mat は表示される画像データです。なお、この関数はNumPy配列内の画像データしか表示できませんので、他の形式の画像を表示したい場合は、他の関数を使用して変換する必要があります。

import cv2
img = cv2.imread('66666.png',cv2.IMREAD_GRAYSCALE)#以灰度图格式读取车道线图片
print(type(img))#打印格式
print(img.shape)#打印图片尺寸
cv2.imshow('image_DX2003zhouyilin',img)#显示灰度图片

3. cv2.imwrite

cv2.imwrite() は、画像をファイルとして保存するために使用できる OpenCV Python ライブラリの関数です。ファイル名と保存する画像配列オブジェクトの 2 つのパラメータを受け入れます。ファイル名には、保存する画像形式 (.png、.jpg など) を示すファイル拡張子が含まれている必要があります。画像配列のデータ型は、選択したファイル形式と互換性がある必要があります。

import cv2
img = cv2.imread('66666.png',cv2.IMREAD_GRAYSCALE)#以灰度图格式读取车道线图片
print(type(img))#打印格式
print(img.shape)#打印图片尺寸
cv2.imshow('image_DX2003zhouyilin',img)#显示灰度图片
k = cv2.waitKey(0)#为了防止程序结束导致图片瞬间出现并消失,增加阻塞函数
cv2.imwrite('grey_image.bmp',img)#第一个参数是文件名,后面必须要有图片拓展名

実行後、同じ拡張子形式の画像ファイルがプロジェクトフォルダーに生成されます。

要約する

この記事では、opencv の 3 つの基本関数の使用法を簡単に紹介するだけで、引き続き opencv について詳しく学習していきます。

おすすめ

転載: blog.csdn.net/qq_53092944/article/details/130237346