opencv チュートリアル
opencvを使い始める
サーチ…
備考
このセクションでは、opencvの概要と、なぜ開発者がそれを使いたいのかを概説します。
opencv内の大きなテーマについても触れ、関連するトピックにリンクしてください。 opencvのドキュメンテーションは新しいので、これらの関連トピックの初期バージョンを作成する必要があります。
バージョン
OpenCV 3
バージョン | 発売日 |
---|---|
3.2 | 2016-12-23 |
3.1 | 2015-12-18 |
3.0 | 2015年06月03日 |
3.0 RC1 | 2015-04-23 |
3.0ベータ | 2014-11-07 |
3.0アルファ | 2014-08-21 |
OpenCV 2
バージョン | 発売日 |
---|---|
2.4.13 | 2016年5月19日 |
2.4.12 | 2015-07-30 |
2.4.11 | 2015-02-25 |
2.4.10 | 2014-10-01 |
2.4.9 | 2014-04-14 |
2.3.1 | 2011-08-17 |
2.3.0 | 2011年7月4日 |
2.2.0 | 2010-12-05 |
2.1.0 | 2010-04-06 |
2.0.0 | 2009-10-01 |
1.0.0 | 2006-10-19 |
OpenCVでイメージを読み込んで表示する
この例では、ディスクからカラー画像を読み込み、OpenCVの組み込み関数を使って表示する方法を見ていきます。 C / C ++、Python、またはJavaバインディングを使用してこれを実行できます。
C ++では:
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
int main(int argc, char** argv) {
// We'll start by loading an image from the drive
Mat image = imread("image.jpg", CV_LOAD_IMAGE_COLOR);
// We check that our image has been correctly loaded
if(image.empty()) {
std::cout << "Error: the image has been incorrectly loaded." << std::endl;
return 0;
}
// Then we create a window to display our image
namedWindow("My first OpenCV window");
// Finally, we display our image and ask the program to wait for a key to be pressed
imshow("My first OpenCV window", image);
waitKey(0);
return 0;
}
Pythonで:
import sys
import cv2
# We load the image from disk
img = cv2.imread("image.jpg", cv2.CV_LOAD_IMAGE_COLOR)
# We check that our image has been correctly loaded
if img.size == 0
sys.exit("Error: the image has not been correctly loaded.")
# We create a window to display our image
cv2.namedwindow("My first OpenCV window")
# We display our image and ask the program to wait until a key is pressed
cv2.imshow("My first OpenCV window", img)
cv2.waitKey(0)
# We close the window
cv2.destroyAllWindows()
Javaの場合:
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
import org.opencv.highgui.Highgui;
public class Sample{
public static void main (String[] args) {
//Load native opencv library
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//Read image from file first param:file location ,second param:color space
Mat img = imread("image.jpg",CV_LOAD_IMAGE_COLOR);
//If the image is successfully read.
if (img.size() == 0) {
System.exit(1);
}
}
HighGuiには、opencv javaにはnamedwindowsまたはimshowに相当するものはありません。画像を表示するには、swingまたはswtを使用します。
ソースからOpenCVをビルドしてインストールする
これは、ソースからDebianベースのLinuxシステムにOpenCV 3をインストールするためのステップバイステップのガイドです。これらの手順は、他のディストリビューションでも同じままでなければなりません。ビルド用のパッケージをインストールするときは、関連するパッケージマネージャコマンドを置き換えてください。
注:時間を浪費したり端末を嫌う気がしない場合は、SynapticのパッケージマネージャGUIからOpenCVをインストールすることができます。しかし、これらのライブラリは時代遅れです。
ビルドの準備
端末で以下のコマンドを発行し、必要なパッケージをインストールします。
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config \
libavcodec-dev libavformat-dev libswscale-dev
次のパッケージはオプションです。
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev \
libpng-devlibtiff-dev libjasper-dev libdc1394-22-dev
次のコマンドを発行してOpenCVソースコードを取得し、ビルドを準備します。
mkdir ~/src
cd ~/src
git clone https://github.com/opencv/opencv.git
cd opencv
mkdir build && cd build
ビルドとインストール
ビルドには例が含まれていますが、自由に削除してください。また、他のフラグを設定して、適切と思われるようにビルドをカスタマイズすることも自由です。
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=ON ..
CMakeがエラーやライブラリの不足を報告しなかった場合は、ビルドを続けます。
make -j$(nproc)
エラーが発生しなかった場合、OpenCVをシステムにインストールすることができます:
sudo make install
OpenCVがあなたのシステムで利用できるようになりました。次の行を使用して、OpenCVがインストールされている場所とインストールされているライブラリを知ることができます。
pkg-config --cflags opencv # get the include path (-I)
pkg-config --libs opencv # get the libraries path (-L) and the libraries (-l)
テストインストール
最初にC ++の例をビルドします。
cd ~/src/opencv/samples
cmake .
make
エラーが発生しなかった場合は、任意のサンプルを実行します。
./cpp/cpp-example-edge
サンプルが実行されると、C ++ライブラリが適切にインストールされます。
次に、Pythonバインディングをテストします。
python
>> import cv2
>> print cv2.__version__
これらのコマンドがOpenCVをインポートし、正しいバージョンを印刷する場合、Pythonバインディングが正しくインストールされています。
Congrats、あなたはOpenCVをビルドしてインストールしました。ハッピープログラミング!
Macの場合はこちらを参照してください。Mac OS XでのOpenCVのインストール
Hello WorldのJavaでの例
Javaのファイルシステムから読み込んだOpenCvイメージ
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class Giris {
public static void main(String[] args) {
//Load native library
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//image container object
Mat imageArray;
//Read image from file system
imageArray=Imgcodecs.imread("C:\\Users\\mesutpiskin\\sample.jpg");
//Get image with & height
System.out.println(imageArray.rows());
System.out.println(imageArray.cols());
}
}
ウェブカメラから画像を取得する
Java、C / C ++、およびPythonでOpenCVのVideoCaptureクラスを使用して、Webカメラから取得したライブビデオフィードを表示します。
Java
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.videoio.VideoCapture;
public class Camera {
public static void main(String[] args) {
// Load Native Library
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// image container object
Mat imageArray = new Mat();
// Video device acces
VideoCapture videoDevice = new VideoCapture();
// 0:Start default video device 1,2 etc video device id
videoDevice.open(0);
// is contected
if (videoDevice.isOpened()) {
// Get frame from camera
videoDevice.read(imageArray);
// image array
System.out.println(imageArray.toString());
// Release video device
videoDevice.release();
} else {
System.out.println("Error.");
}
}
}
C ++
#include "opencv2/opencv.hpp"
#include "iostream"
int main(int, char**) {
// open the first webcam plugged in the computer
cv::VideoCapture camera(0);
if (!camera.isOpened()) {
std::cerr << "ERROR: Could not open camera" << std::endl;
return 1;
}
// create a window to display the images from the webcam
cv::namedWindow("Webcam", CV_WINDOW_AUTOSIZE);
// this will contain the image from the webcam
cv::Mat frame;
// capture the next frame from the webcam
camera >> frame;
// display the frame until you press a key
while (1) {
// show the image on the window
cv::imshow("Webcam", frame);
// wait (10ms) for a key to be pressed
if (cv::waitKey(10) >= 0)
break;
}
return 0;
}
Python
import numpy as np
import cv2
# Video source - can be camera index number given by 'ls /dev/video*
# or can be a video file, e.g. '~/Video.avi'
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
WindowsでのOpenCV 3.1入門
WindowsにOpenCV 3.1.0をインストールして起動します。 WindowsにOpenCVをインストールするには、2つの方法があります。 1つはインストーラをダウンロードして実行することです。他のものはソースからビルドすることです。
これはOpenCVをインストールして開始する最も簡単な方法です。 OpenCVはビルド前のバイナリをWindowsにインストールするためのものです 。ダウンロードが完了したら、抽出して選択したパスにインストールします。
ProTip: OpenCVパスにスペースが含まれていないことを確認してください。したがって、C:\またはD:\ rootディレクトリにインストールするだけの方がよいでしょう
上記の方法の問題は、opencv_contribモジュールを使用できないことです。また、サードパーティのツールやライブラリはすべて付属していません。あなたがこれらのすべてを使いたいならば、そのまま続けてください。
ソースからOpenCVをインストールするための最小限の最小限度について説明します。より高度なものについては、 ここを参照してください 。
- CMakeをインストールします。
- いくつかのディレクトリにはスペースを持たないOpenCVソースをhttps://github.com/Itseez/opencv.gitからクローンしてください 。それを "OpenCVdir"と呼んでいます。
- 次に、CMake GUIを開き、ソースディレクトリ(OpenCVdir)をSourcesメニューに追加し、ビルドメニューへのディレクトリをビルドします。 ヒント:ビルドディレクトリがない場合は、opencvフォルダにディレクトリを作成します。
- [構成]をクリックし、Visual Studioコンパイラのバージョンを選択します。私はVisual Studio 2013 Professional 32ビットを持っていたので、私はVisual Studio 12コンパイラを選択しました。
ヒント:ここからVisual Studio 2013 Professionalをダウンロードできます。サインイン後30日間の試用+ 90日間の延長トレイルが付属しています。
- Finishを押すと、CMakeはすべてのパッケージを自動的に読み込みます。パッケージを追加または削除できます。 [設定]をもう一度押します。
- 余分なopencv_contribモジュールを使ってビルドする場合は、 ここからダウンロードする必要があります 。次に、それらを抽出し、以下に示すようにopencv_contrib / modulesディレクトリをCMakeに追加します。
- もう一度Configureを押し、次にGenerateを押します。
- CMakeを閉じます。 your_opencv \ buildフォルダに移動し、 'OpenCV.sln'ファイルを開きます。 - Visual Studioが開きます。今、両方のデバッグでそれを実行しますモードとリリースモード。
- Visual Studioの右上にあるソリューションエクスプローラで、INSTALL projectを選択してビルドします。
ハレイ!あなたのOpenCVをお楽しみください。
OpenCVインクルードディレクトリを環境変数のPATH変数に追加する:
ここでは、OpenCVdir / build / install / x86 / vc ** / binにあるbinフォルダをこの変数に追加します。既存のPath値を置き換えないように注意してください。
その後、環境変数を変更するためにシステムを再起動する必要があります。
OPENCVとは何ですか?
OpenCV(オープンソースコンピュータビジョンライブラリ)は、オープンソースのコンピュータビジョンと機械学習ソフトウェアライブラリです。機械学習、コンピュータビジョン、アルゴリズム、数学的操作、ビデオキャプチャ、画像処理など、さまざまな目的のために作られています。長年にわたり、研究者や開発者の間ではさまざまなプラットフォーム(Windows、Linux 、android、ios)また、それは様々な有名なプログラミング言語のラッパーを持っています。ライセンス契約に基づき、企業はコードを利用して変更することができます。
ライブラリには2500を超える最適化されたアルゴリズムが含まれており、性能とスピードに優れた精度を備えています。これらのアルゴリズムは、顔の検出と認識、オブジェクトの識別、ビデオ内の人間の行動の分類、カメラの動きの追跡、動く物体の追跡、物体の3Dモデルの抽出、ステレオカメラからの3D点群の生成、画像データベースから同様の画像を探したり、フラッシュを使って撮影した画像から赤目を除去したり、目の動きに従ったり、景色を認識したり、拡張現実感でオーバーレイするためのマーカを確立したりすることができます。OpenCVは、開発者と研究者の数は47,000人を超え、推定ダウンロード数は700万人を超えています。図書館は、プロの企業、研究グループ、その他のグループに幅広く存在します。
Google、Yahoo、Microsoft、Intel、IBM、Sony、Honda、Toyotaのような多くのよく確立された企業は、OpenCVを幅広く利用するApplied Minds、VideoSurf、Zeiteraなどの多くの新興企業があります。 OpenCVの導入された用途は、ストリートビューの画像をつなぎ合わせること、イスラエルの監視ビデオの侵入を監視すること、中国の鉱山機器を監視すること、ロボットがWillow Garageで物体をナビゲートして拾うこと、ヨーロッパのプール溺水事故の検出、スペイン、ニューヨークで、トルコの瓦礫の滑走路を調べ、世界中の工場の製品ラベルを調べ、日本での迅速な顔の検出を行った。 C ++、C、Python、Java、MATLABインターフェイスを持ち、Windows、Linux、Android、Mac OSをサポートしています。 OpenCVは主にリアルタイムビジョンアプリケーションに向いており、利用可能な場合はMMXおよびSSE命令を利用しています。完全な機能を備えたCUDAおよびOpenCLインタフェースは、現在積極的に開発されています。 500を超えるアルゴリズムと、これらのアルゴリズムを構成またはサポートする関数の約10倍の数があります。 OpenCVはネイティブでC ++で書かれており、STLコンテナとシームレスに動作するテンプレートインターフェイスを備えています。
公式サイトから収集した情報