スポンサーリンク

OpenCVのまとめ

自分の勉強用にリンクをまとめたものです。

OpenCVのバージョンについて

OpenCVのバージョンについては以下のリンクを見る。
OpenCVとは? 最新3.0の新機能概要とモジュール構成

OpenCV逆引きリファレンス

OpenCVでやりたいことが決まっている場合は以下のリンクを見る。
OpenCV逆引きリファレンス

Matの基本処理

OpenCV 1.x には,基本的に C言語 および Python のインタフェースが用意されていましたが,OpenCV 2.0 以降では,新たに C++ インタフェースが追加されました. OpenCV 1.x では,画像を管理する構造体として IplImage が,その他の行列を管理する構造体として CvMat が用いられました. しかし,OpenCV 2.x の C++ インタフェースでは, cv::Mat クラスを利用して,これらを統一的に扱います. cv::Mat クラスは,実際のデータへのポインタと,様々なプロパティ(幅,高さ,ビット深度など)を保持します.
cv::Matの基本処理

C++版 OpenCVの基本

OpenCVはライブラリの一つです。したがって、C++のソースコード内でOpenCVを使うためには、ヘッダファイルをインクルードして名前空間を指示しなければなりません。基本的にはインクルードするのは2つですが、OpenCVのより多くの機能を使う場合にはインクルードファイルの数が増えることがあります。標準ライブラリでusing namespace std; としたように、OpenCVではプログラムの最初にusing namespace cv; と書く必要があります。
C++版 OpenCVの基本

Matに画像を読み込む

imread関数を使います。2つ目の引数にはカラーで読み込むならIMREAD_UNCHANGEDを、グレースケールで読み込むならIMREAD_GRAYSCALEを指定します。
Matに画像を読み込む

Matの画像を表示させる

imshow関数を使います。1つ目の引数にウィンドウの名前、2つ目の引数に表示したいMatの名前を指定します。
画像の表示

グレースケール化する

cvtColor関数でグレースケール化できます。第一引数にカラー画像のMatを、第二引数にグレースケール画像を入れるためのMatを、第三引数にCV_BGR2GRAYを指定します。
グレースケール化する

画像の書き出し

imwrite関数で画像を保存できます。第一引数に出力する場所へのパスを指定します。拡張子はpng、jpgなどが可能です。Mat型のimgに対して下のようにして画像を書き出せます。
画像の書き出し

VS2010にOpenCV2.4.9をインストール

VisualStudioにOpenCVをインストールしたいとき↓
VS2010にOpenCV2.4.9をインストール

ライブラリパスの設定

リンクには、opencvの関数の場所または実態を示したLIBファイルが必要です。
ライブラリパスの設定

OpenCV_ CV_8UC1 から CV_8UC3 に変換する

チャンネル数 1 から チャンネル数 3 に変換したいとき。つまり、グレー画像からカラーに変換したいとき。

OpenCV_ CV_8UC1 から CV_8UC3 に変換する

基礎概念とOpenCVの導入(IplImage)

画像処理の考え方について理解したいとき↓

基礎概念とOpenCVの導入

IplImage構造体について

IplImageの構造について知りたくなったとき↓

【OpenCV】IplImage構造体

IplImageを定義する

・ファイルから確保する場合
IplImage* src_img = cvLoadImage(“TestImage.bmp”,CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);

・新規に画像データを確保する場合
IplImage* src_img = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3); 

16ビット画像を生成する

16ビット画像を使いたくなったとき↓

16ビット画像を生成する

IplImage* img = cvCreateImage(cvSize(500, 500), IPL_DEPTH_16U, 1);

for (int x = 0; x < img->width; x++)
{
for (int y = 0; y < img->height; y++)
{
cvSetReal2D(img, y, x, 65535 * (sqrt(pow(250-x, 2) + pow(250-y, 2)) / 500));
}
}

cvSaveImage(“16bit.png”, img);

OpenCVで細線化

OpenCVで細線化したいとき(C++)。詳細は下記サイトを参照。

opencvで細線化