記事ディレクトリ
序文
Lao Wang と私はマシン ビジョンの方向でコンピューター業界に転職したいと考えているため、OpenCV をゼロから学習し始める予定です。しかし現在、OpenCV には C++ と Python という 2 つの公式言語があります。C# では、一部の専門家が対応する OpenCV バージョンを適応させています。現在の3言語の特徴は、
- C++: 実行効率は最も速いが、構文が非常に難しく、開発が非常に困難
- Python: 開発効率は非常に速いですが、実行効率は非常に遅く、最適化が不十分な場合は C++ の 20 倍以上遅くなります。
- C#: 開発効率は速く、Python よりもそれほど遅くはありませんが、実行効率は C++ よりも低くなります。ただし、OpenCV に関連するチュートリアルはほとんどありません
そこで私は 3 つの言語を同時に開発するという、難しいながらも正しい決断を下しました。実際には、同じ機能を 3 つの言語が一緒に開発しているだけです。
コース選択
現在、サイト B でチュートリアルを検索しているところ、閲覧数が最も多い 2 つのチュートリアルを見つけました。ゼロから学習する場合でも、多くの構成の詳細とコンパイラの操作を理解する必要があるため、ビデオを読むことをお勧めします。この期間の目標は、コードが実行できること、つまり勝利です。
【2022BサイトイチオシのOpenCVコース】入門から実践までOpenCVフルコース(コースウェア教材+コースウェアノート付き)画像処理
合計 2 つのクラスがあり、1 つは Python で、もう 1 つは C++ です。開発者として、私は間違いなく最初に C++ コースを受講します。実行できる限り C++ は最も難しいコースだからです。
環境構成
パイソン
以前に設定したことがありますので、ここに直接リンクを貼ります。
C#
C#でもやってみました
C++
今回は主にC++についてお話します。
OpenCV公式サイトのダウンロード
ダウンロード後、解凍してください
新しい C++ プロジェクトを作成する
テスト走行
このコードを他の人のコードからコピーしました
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
Mat image = Mat::zeros(300, 600, CV_8UC3);
circle(image, Point(300, 200), 100, Scalar(25, 110, 288), -100);
circle(image, Point(400, 200), 100, Scalar(255, 123, 127), -100);
imshow("Show Window", image);
waitKey(0);
return 0;
}
以下の画像が表示されれば成功です
Cシャープのバージョン
static void Main(string[] args)
{
Mat image = new Mat(300,600,MatType.CV_8UC3);
image.Circle(new Point(300, 200), 100, new Scalar(25, 110, 288), -100);
image.Circle(new Point(400, 200), 100, new Scalar(255, 123, 127), -100);
Cv2.ImShow("Show Window",image);
Cv2.WaitKey(0);
//Console.WriteLine("Hello, World!");
Console.ReadKey();
}
Pythonのバージョン
Python は他のコードとはまったく異なり、C++ と Csharp の命名ロジックは基本的に同じですが、Python は少し独特です。
長い間ネットで検索した結果、ようやく描き方を見つけました。Python と C++ が本質的に同じかどうかはわかりませんが、表示される結果は似ています。
import cv2
# python中需要np来辅助
import numpy as np
image =np.zeros((300, 600, 3), np.uint8)
cv2.circle(image,(300,200),100,(25,110,288),-100);
cv2.circle(image,(400,200),100,(255,123,127),-100);
cv2.imshow("Show Window",image)
cv2.waitKey(0)
ギティ倉庫
新しい倉庫を作りましたが、あまり意味がない気がします。3 つのファイルのライブラリ管理の違いにより、C++、Python、Csharp のグローバル ライブラリはプロジェクトごとに独立したライブラリになります。そのため、頻繁に新しいプロジェクトを作成するのは面倒です。ここでは新しいプロジェクトは作成しません。コードを貼り付けて使用するだけです。
要約する
今回は OpenCV 環境をインストールしただけですが、次回は 3 つの言語を正しく使用して OpenCV を記述する方法を学びます。