【参考書籍】画像処理・機械学習プログラミング OpenCV 3対応

これまでもマイナビのOpenCVの本は購入してきたので、今回も買ってみました。

 

画像処理・機械学習プログラミング OpenCV 3対応

 

まず、第一印象は、薄い、小っちゃい(一番、右のやつ)

 

フォントも小さくなっているので、内容量はこれまでと同じぐらいか??

 

内容的には、インストール方法には割とページを割いてあって、画素値の操作方法も書いてあるところまではいいのですが、そこから先は具体例になってしまうので、OpenCV初心者には難しく感じるかもしれません。

当然ながらIplImageとかは登場しません。

 

以前はOpenCV.jpを見れば関数のマニュアルについては、日本語で情報を得られましたが、今は更新が止まっているので、OpenCV3対応の日本語マニュアルってあるのかな??

 

関数のマニュアルを見たい場合は英語になりますが、このへん↓が参考になると思います。

http://docs.opencv.org/master/index.html

 

右上の検索ボックスから、関数を一個一個検索しながら参照すると良いかと思います。

 

それでも日本語で最新の情報を知りたい!という場合には、ここ↓がおススメです。

http://www.buildinsider.net/small/opencv

 

ところで、今回の著者の中に井村先生の名前が入っていたけど、どこの記事を担当したんだろうか??

井村先生といえば、ラベリングクラスでお世話になった人も多いかと思いますが、OpenCV3からはラベリング処理(connectedComponents、connectedComponentsWithStats)は入っているし。。

 

目次

1章 導入編
2章 スタートアップ編
3章 ケーススタディ 編
画素値の直接操作
カメラキャリブレーションとステレオ視
画像のJPEG圧縮とPSNRの計算
簡単な笑顔度の算出
CAPTCHA画像の生成
Kinect v2とOpenCVの連携
ミニチュア風画像処理
ORB特徴を使ったイメージモザイキング
機械学習と画像処理
顔の子供化
動画ファイルをカメラ入力のように扱う

 

【OpenCV】疑似カラー(カラーマップ)

OpenCVを使ってモノクロ画像に疑似的に色をつけるにはcv::applyColorMap関数が用意されています。

 

【簡単なソースコード】

#include "stdafx.h"
#include <opencv2/opencv.hpp>;

using namespace cv;

int main()
{
 // 画像読込
 Mat img0 = imread("Mandrill.BMP");
 
 Mat cm_img0;
 // 疑似カラー(カラーマップ)変換
 applyColorMap(img0, cm_img0, COLORMAP_JET);

 // 画像表示
 imshow("cm_img0", cm_img0);

 // キー入力待ち
 waitKey(0);

 // 画像保存
 imwrite("Mandrill_COLORMAP_JET.BMP", cm_img0);

 return 0;
}

(参考)

http://docs.opencv.org/3.2.0/d3/d50/group__imgproc__colormap.html

 

【処理結果】

 

applyColorMap関数の書式は、下記の通り

 

void cv::applyColorMap (
InputArray src,
OutputArray dst,
int colormap
)

 

colormapの設定の違いにより、以下のように色変換されます。

 

オリジナル画像

 

COLORMAP_AUTUMN

 

COLORMAP_BONE

 

   
COLORMAP_JET

 

COLORMAP_WINTER

 

   
COLORMAP_RAINBOW

 

COLORMAP_OCEAN

 

   
COLORMAP_SUMMER

 

COLORMAP_SPRING

 

   
COLORMAP_COOL

 

COLORMAP_HSV

 

   
COLORMAP_PINK

 

COLORMAP_HOT

 

 
COLORMAP_PARULA

 

 

個人的に使えそうなのは、COLORMAP_JETとCOLORMAP_HOTぐらいかな?

 

OpenCVへ戻る

【OpenCvSharp】サンプルプログラムの公開

少し前に、とある記事向けに書いたOpenCvSharpのサンプルプログラム。

少しバージョンが古くなっていますが、眠らせておくのも、もったいないので公開しておきます。

 

 

ダウンロードはこちら↓

OpenCvSharp サンプルプログラム

注)zipファイルを解凍してから使って下さい。

zipのプレビューからslnファイルを実行すると、プロジェクトファイルの読込に失敗します。

 

このサンプルだけで、

 

平滑化(Blur、GaussianBlur、Median)

二値化(普通の二値化、大津の二値化)

輪郭処理(ソーベルフィルタ、Cannyエッジ)

モフォロジー(膨張、収縮、オープニング、クロージング)

ヒストグラム表示

 

ができます。

OpenCVでなかなかカラーのヒストグラムまでのサンプルプログラムを書いてあるのは、あまりないので、そこそこ良いサンプルプログラムだと思っていたのですが、なんでボツったんだろう??

OpenCV3.1+Visual Studio 2015+64bitOSで簡単にOpenCVを試す

OpenCVも含めてライブラリを使うには、基本的に

 

  • ダイナミックリンクライブラリファイル(*.dll)
  • ライブラリファイル(*.lib)
  • ヘッダファイル(インクルードファイル)(*.h)

 

の3点セットのファイルを使えるように設定するのですが、やり方はいくつかあるのですが、ここでは比較的簡単な方法を紹介します。

【関連記事】

ライブラリの使用方法、VisualStudioの設定方法

 

前提条件

  • Windowsの64bitOS
  • Visual Studio 2013(VC12)もしくはVisual Studio 2015(VC14)

 

上記の環境であれば、あらかじめビルドされたOpenCVのライブラリファイルが配布されているので、これを使います。

 

上記環境でない場合、もしくは、標準に含まれていない機能を使いたい場合には、自分でOpenCVのライブラリをビルドする必要があるのですが、その方法については下記ページを参照下さい。

初めてのOpenCV開発 ― CMakeを使ったOpenCVのカスタマイズ【OpenCV 2.4.9】

 

 

OpenCVの入手、ダウンロード

Windows版のOepnCVは、下記ページに公開されています。

https://sourceforge.net/projects/opencvlibrary/files/opencv-win/

 

2016年5月現在の最新バージョンはVer.3.1.0になるので、3.1.0の部分をクリックします。

次にopencv-3.1.0.exeの部分をクリックするとファイルのダウンロードが始まります。

 

ダウンロードが完了するとopencv-3.1.0.exeをダブルクリックするとファイルの解凍が始まるのですが、解凍先(Extract to:)はどこでもいいのですが、ここではCドライブ直下に設定しています。

 

 

解凍が終わるとopencvというフォルダが作成されますが、慣例的にバージョンが分かるようにフォルダ名を変えておきます。(必須ではありません)

 

  opencv 

    ↓

  opencv3.1.0

 

Visual Studio の設定

今回はVisual Studio 2015(VC14)の例で説明します。

再度おさらいですが、ライブラリを使用するには

  • ダイナミックリンクライブラリファイル(*.dll)
  • ライブラリファイル(*.lib)
  • ヘッダファイル(インクルードファイル)(*.h)

の3点セットが必要になります。

*.dllファイルはプログラム実行時に必要になり、*.libと*.hのファイルはプログラミング時に必要になります。

そのため、*.libと*.hの2種類のファイルをVisual Studioで使えるように、設定が必要となります。

 

まずは、Visual Studio を起動し、新しいプロジェクトを作成します。

 

 

Visual C++ → Win32 → Win32コンソールアプリケーション

 

と選択し、プロジェクトの名前場所を指定し、OKボタンをクリックします。

 

 

次の画面では、そのまま完了をクリック

 

 

すると、こんな↓最小限のコードが作成せれます。

これをベースにOpenCVの設定を行っていきます。

 

 

プロジェクト名の部分を右クリックし、プロパティをクリックします。

 

 

まずはヘッダファイル(インクルードファイル)(*.h)を使えるように設定を行います。

 

プロパティのページで、構成すべての構成プラットフォームx64であることを確認して下さい。

違う場合は、それぞれすべての構成とx64を選択して下さい。

 

 

C/C++→全般と選択し、追加のインクルードディレクトリマークをクリックし、<編集…>をクリックします。

 

ここで、OpenCVを解凍したフォルダ内のbuild\includeフォルダを選択し、フォルダーの選択をクリックします。

※ここでは最初に解凍フォルダをopencvからopencv3.1.0に名前を変更しています。

 

 

次にOKボタンをクリックします。

 

 

これで、ヘッダファイル(*.h)の設定は完了です。

 

次にライブラリファイル(*.lib)の設定を行います。

OpenCVの場合、ライブラリファイルの実体はOpenCVのバージョンやDebug用、Release用と異なるので注意して下さい。

 

OpenCV Ver.3.1.0の場合

Release用  opencv_world310.libなど

Debug用  opencv_world310d.libなど

 

となります。

ファイル名の310の部分はバージョン名になるので、別のバージョンを使用する場合には310の部分を読み替えて下さい。

 

また、古いバージョンのOpenCVでは機能ごとにlibファイルが用意されていたので、使用する機能ごとに複数のlibファイルを使用できるように設定する必要があったのですが、最近のバージョンでは、opencv_world310.libというように、いくつかの機能が一つのファイルにまとめられたので、普通の画像処理のフィルタ処理などを行いたい場合では、このファイルを使用できるように設定すればOKです。

 

インクルードファイル(ヘッダファイル)の時と同様に、プロジェクトのプロパティ―をクリックし、

構成すべての構成プラットフォーム が x64

であることを確認し

リンカー→全般→追加のライブラリディレクトリ

と選択し、<編集…>をクリックします。

 

 

ここで新しい行を選択します。

 

 

[・・・] の部分をクリック

 

 

ここで、OpenCVを解凍したフォルダ内のbuid\x64\vc14内のlibフォルダを選択し、フォルダーの選択ボタンをクリックします。

※Visual Studio 2013を使う場合はbuid\x64\vc12内のlibフォルダを選択してください。

 

 

OKボタンをクリックして、libファイルの参照先(フォルダ)の設定が完了します。

 

 

次に、実際に使用するlibファイルの参照設定を行うのですが、これはDebug用、Release用と別々に設定する必要があります。

まずは、Debug用の設定です。

 

構成の部分をこれまではすべての構成にしていましたが、Debugを選択します。

 

 

次に、プロパティ―ページのリンカー→入力→追加の依存ファイルの部分のマークをクリックします。

 

 

次に<編集…>をクリック

 

 

ここで、Debug用のlibファイル名(opencv_world310d.lib)を入力しOKボタンをクリックします。(ファイル選択ではありません。)

 

 

次にRelease用のlibファイルを設定するため、構成の部分をReleaseに切り替えます。

 

 

Debug用の時と同様に今度はRelease用のlibファイル名(opencv_world310.lib)を入力しOKボタンをクリックします。注!)ファイル名にdが付きません。

 

 

OKボタンをクリックし、適用ボタンをクリックするとVisual Studioの設定は完了です。

 

 

サンプルプログラム

新規に作成したプロジェクトに#includeの部分とmain関数内に以下のようにプログラムを書いてみます。

#include "stdafx.h"

#include <opencv2/opencv.hpp>

int main()
{
 // 処理前の画像データ読込
 cv::Mat src = cv::imread("C:\\temp\\Mandrill.BMP", cv::IMREAD_UNCHANGED);
 // 処理後画像データ用
 cv::Mat dst;

 // 大津の二値化
 cv::threshold(src, dst, 0, 255, cv::THRESH_OTSU);

 // 処理前の画像を表示
 cv::imshow("SrcImage", src);
 // 処理後の画像を表示
 cv::imshow("DstImage", dst);

 // キー入力待ち
 cv::waitKey(0);

 return 0;
}

ソリューションプラットフォームがx86になっていたら、これをx64に変更します。

 

 

この状態で、プロジェクトをビルドします。

ちなみに、この状態で実行すると以下のようなメッセージが表示されます。

 

 

これはプログラム実行中に必要なダイナミックライブラリファイル(*.DLL)が見つからないためで、OpenCVの場合はPathを設定します!という説明が多いのですが、今回は手抜きなので、解凍したOpenCVのフォルダ(C:\opencv3.1.0\build\x64\vc14\bin など)内のdllファイルをコピーする事にします。

 

Visual Studio でx64でDebug、Releaseでビルドすると、それぞれ

 

(ソリューションフォルダ)\x64\Debug

(ソリューションフォルダ)\x64\Release

 

というフォルダができているので、解凍したOpenCVのフォルダ(C:\opencv3.1.0\build\x64\vc14\bin など)から

 

Debugの場合、opencv_world310d.dllのファイルを\x64\Debugのフォルダに

Releaseの場合、opencv_world310.dllのファイルを\x64\Releaseのフォルダに

 

コピーします。

この方法だと、Pathの設定をしないで済むので、プロジェクトごと他のPCに移植する場合などに、Pathの設定をせずに移植できるので、比較的簡単です。(OpenCVのファイルはやっぱり必要になりますが。。)

デメリットとしては、プロジェクトごとにDLLファイルをコピーするので、HDDを圧迫することになります。

と言ってもDebug,Release両方合わせても100MBぐらいなので、今どきのPCなら問題ないでしょう?!

 

この状態で、プログラムを実行し以下のように表示されたら、設定成功です!

 

トラブルシューティング

■includeファイルを開けませんと表示される

プロジェクトのプロパティで構成のプロパティ→C/C++→全般追加のインクルードディレクトリが正しく設定されているか?確認してください。設定は構成やプラットフォームごとに設定できるようになっているので、構成がDebugやRelease、プラットフォームがx64になっているか?確認してください。

 

■ファイル’opencv_world310d.lib’を開くことができません。と表示される

プロジェクトのプロパティで構成のプロパティ→リンカー→全般追加のライブラリディレクトリに正しく*.libファイルのあるディレクトリが指定されているか?確認してください。

 

■未解決のシンボル”XXXXX”が関数XXXXで参照されました。と表示される

これは割とよくあるエラーです。

プロジェクトのプロパティで構成のプロパティ→リンカー→入力追加の依存ファイルに正しく*.libファイルが設定されているか?確認してください

 

その他

GPUの処理も試してみたい!とかいう人向けには、Build INSIDERのこの辺の記事↓

 

OpenCV入門

http://www.buildinsider.net/small/opencv

 

が参考になると思いますが、CMakeって何???という人には、まずは本記事の方法がおススメです。

 

【OpenCV】黒板風処理

少し前にOpenCVで漫画風処理というのが流行りましたが、黒板風の処理をやってみました。

 

処理結果はこんな感じ↓

 

【処理前画像】

【処理後画像】

 

この処理のソースコードはこちら↓になります。

#include "stdafx.h"
#include "opencv2/opencv.hpp"

int main()
{
	// グレースケールで画像の読込
	cv::Mat srcImage = cv::imread("処理前.png", 0);

	// チョークの擦れ感はランダムノイズで
	cv::Mat noise(srcImage.size(), srcImage.type());
	cv::randn(noise, 300, 200);
	// ノイズを少しぼやかす
	cv::GaussianBlur(noise, noise, cv::Size(3, 3), 0.5);

	// チョークの文字( = ノイズ - 元画像)
	cv::Mat letter = noise - srcImage;

	// モノクロデータからカラーデータへ
	cv::Mat colorLetter;
	cv:cvtColor(letter, colorLetter, cv::COLOR_GRAY2BGR);

	// 背景色(黒板)
	cv::Mat backColor(srcImage.size(), CV_8UC3, cv::Scalar(0, 40, 0));

	// 黒板の画像 = 背景色 + 擦れ文字
	cv::Mat blackBoard = backColor + colorLetter;
	cv::imshow("黒板処理", blackBoard);
	
	// 処理結果の保存
	cv::imwrite("黒板処理.png", blackBoard);

	// キー入力待ち
	cv::waitKey();

	return 0;
}

【処理の簡単な解説】

①画像をモノクロで読み込む(imread関数)

この画像は紙に書いた文字をスキャナで読込ました。

 

②チョークの擦れ具合を表現するのに、ノイズ画像(randn関数)を作成し、その画像を少しぼやかす(GaussianBlur関数)

 

③ノイズの画像②から元の画像①を引いて、文字の部分だけを残す

 

④黒板用の画像を作成

 

⑤ ③で作成した文字と④の黒板の画像を足し合わせて完成!

 

かなり簡単にやってみましたが、細かい設定をいじくると、もう少し、それっぽくなるかも?しれません。

 

【余談】

なぜ、黒板の処理をやってみたか?というと、会社の人たちが主にFPGAがテーマのブログ(http://fpgainfo.blog.fc2.com/)を立ち上げたのですが、その中の人が、あまり画像処理を詳しくないのにもかかわらず、フリーのレタッチソフト(GIMP)を使って、こんな↓黒板っぽい処理をやっていた。

 

 

こんなことをやられちゃうと、画像処理魂に火が着いた!

 

この処理は、GIMPにネオン光彩という処理があり、この処理によりチョークの擦れているっぽい処理を行っています。

このネオン光彩の処理はなんとなく、ラプラシアンフィルタっぽかったのですが、OpenCVでラプラシアン処理(Laplacian関数)を行うと、細かい文字がつぶれてしまったので、結局、ノイズを付加する事で、チョークの擦れ具合を表現してみました。

 

最近はOpenCVをあまり触っていなかったのですが、cvtColorの引数の設定など、昔から変わっている部分もあって、いろいろ調べまくりながら作成しました。

 

ブログではOpenCVの関数を明示的にするためにも、using namespace はできるだけ、使わないようにしているのですが、ちょっとクドイので、使っといた方が良かったかも?

 

それにしても、画像間演算は楽だわ~

OpenCV3プログラミングブック

OpenCVプログラミングブックのVer3対応版が出版されました。

 

 

おそらくそんなに内容は変わらないんだろうな~と思いながらも、これまでも購入してきたので買っておいてみたら、いい意味で期待を裏切られる内容でした。

 

これまでのイントール方法から始まりリファレンスマニュアルがメインの内容とは違い、どちらかというとVer2からVer3への移行マニュアルという雰囲気です。

 

さらにOpenCVの処理例も一般的なフィルタ処理の内容は無く、ARや機械学習など、応用例がまとめられています。

逆に言うと、OpenCV初心者が、この本をいきなり手にするのは少々難しく感じると思います。

(この辺の溝を埋めるのが私の役目か??)

 

 

【目次】

1章 イントロダクション

画像処理について/OpenCV/OpenCV3.0/OpenCV2.Xからの移行に関する注意点

2章 OpenCV3.0を利用するための環境構築方法

CMake/公式インストーラ/NuGet/MacPorts/HomeBrew/apt-get install

3章 OpenCV3.0を用いたアプリケーション開発

CMake/Visual Studio

4章 OpenCV3.0を用いたデバッグ方法

5章 コンピュータビジョンにおける三次元幾何

6章 拡張現実感(Augmented Reality:AR)

7章 機械学習による画像認識

8章 プロジェクタカメラシステムープロジェクションマッピング

9章 OpenCVとOpenGLの連携

10章 広視野角HMDのための歪み画像生成

11章 Kinect V2の利用

12章 OpenCL

 

OpenCVへ戻る

Interface 2014年1月号はラズベリーパイxカメラで本格派画像処理

Interface 2014年1月号はラズベリーパイxカメラで本格派画像処理という特集です。

 

 

私もOpenCVの基礎部分の記事をお手伝いさせて頂きました。

 

基礎というより、ライブラリって何?ぐらいの入門レベルなので、OpenCVを使った事のある人はこの記事に期待しないで下さい。

 

それより、他の方の書いたラズベリーパイの部分が面白いと思います。

きっと。。(私も、まだ見てない。)

 

目次

イントロダクション 超小型Linux ×カメラで広がる画像処理マシンの可能性

第1部 ラズベリー・パイで広がるカメラ×画像処理の世界

第1章 はじめてのウェアラブル! スカウター風メガネの製作

Appendix 1 はじめてのカメラ×画像処理に最適! 超定番ボードRaspberry Pi

Appendix 2 感度/発色がすごくいい! ラズベリー・パイ専用カメラ・モジュールの実力

第2部 基礎編:はじめての画像処理

第2章 実験で使うハードとソフト

Appendix 3 Raspberry Piで画像処理を始める準備

第3章 カメラから動画を取り込む

第3部 リアルタイム動画処理にTRY!

Appendix 4 超キホン! 動画像処理の全体像

Appendix 5 画像処理はリアルタイムがうれしい!!

第4章 実験ビフォー・アフタ! リアルタイム画像処理の基本テクニック

第5章 それらしい物体をパッと見つける! リアルタイム色検出

第6章 エア・シャッタ撮影にTRY! リアルタイム動き検出

第7章 ふつうにやるとスゴ重! リアルタイム画像認識テクニック

第8章 LinuxでそこそこすばやくI/Oするテクニック

Appendix 6 画像処理ライブラリOpenCVの基礎知識5

Appendix 7 カメラ・モジュール選択ガイド

 

特設コーナ1:ハード制御のためのLinux入門

第3回 高性能処理のキモ! プログラム実行順序決定のメカニズム

第3回 マルチタスクOSのキモ! タスク切り替えの基本動作

 

特設コーナ2:音声信号処理の世界

第3回 長文聞き取りのためのキー・テクノロジ! 言語モデルを作る

第3回 実験研究:なんと! 人間の聴覚では位相の変化が識別できない

Appendix D-Aコンバータの出力から不要な周波数成分を除去するフィルタの製作

 

特設コーナ3:自作テレビ放送の可能性を探る

第3回 放送に欠かせない動画圧縮入門 MPEG-2から4K向け最新H.265まで!

第3回 実験成功! アマチュア無線バンドを地デジ周波数に戻して映す

Appendix 実録! アマチュア無線の免許申請方法

 

RZマイコン・フォローアップ・コーナ

Linux×アナログ! センシング回路初体験

 

連載記事

第13回 2相ステッピング・モータ・ドライバIC L6470

第2回 なんと! 対象の距離や向きがわからなくても正面画像を得る方法

 

ニュース&レポート&お知らせ

超安全! 閉じたら消える見えないファイルが作れるLinuxカーネル 3.11

新製品Information

わっしょいInterface/組み込みもん/デバッグ

次号予告

 

 

参考文献へ戻る

 

OpenCV2.4.7のダウンロード

OpenCV2.4.7が公開されました。

 

Windows版のダウンロード先はこちら↓

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.7/

 

他のOSはこちら↓からたどって下さい。

http://sourceforge.net/projects/opencvlibrary/files/

 

変更内容についてはこちら↓

http://code.opencv.org/projects/opencv/wiki/ChangeLog

に記載されていますが、個人的にはバグ修正ぐらいであまり影響が無いような...

 

また、配布されている圧縮ファイルのフォルダ構成が、少し変更されました。

 

opencv

  ├build

  └sources

 

ソースファイルがsourcesフォルダ内に格納されるようになりました。

(これで、includeの参照先を間違えにくくなったか?)

 

また、ビルド済みのファイルは、これまではVisualStudio2008、2010、2012向けの3種類配布されていましたが、今回はVisualStudio2010(vc10)とVisualStudio2012(vc11)の2つとなりました。

 

試しにVisual Studio 2013向けでCMakeしてみましたが、CMakeでエラーが出るので、出来ないのか???

Visual Studio 2012向けのCMakeは大丈夫でした。

 

OpenCVへ戻る

【OpenCV】ステップイン実行でOpenCVのソースを確認する方法

OpenCVは当然ながらオープンソースなので、ソースコードは公開されているのですが、ある特定の関数がOpenCV内部では、どのような処理をしているのか?を確認するのに、いきなりソースコードを眺めても、処理を追うのは、かなり困難かと思います。

 

そんな時には、やはりデバッグ実行しながら処理を追いかけた方が分かりやすいのですが、OpenCVの関数内へステップイン実行する方法を紹介します。

 

まず、確認したい処理のサンプルプログラムを作成し、ステップイン(関数の中身へ移動する)したい関数の行の右端のグレーの部分をクリックするか、ステップインする関数の行を選択してF9ボタンを押し、ブレイクポイント(処理を一時停止する場所)を指定します。

 

すると行の左側へ赤丸印が表示され、デバッグ実行を行うと、この赤丸印までの処理が行われ、一時停止状態となります。

 

 

次にメニューのデバッグステップインと選択するか、F11ボタンを押すと、以下のように初回だけ表示されます。

 

これは、今回の例ではcv::imshowの中身を見ようとしているのですが、この処理に必要なファイルがどこにあるのか?を聞かれます。

 

今回の例ではファイルの種類の部分にmatrix.cppと表示されているので、このファイルがあるフォルダを探し、そのフォルダを指定します。

 

ちなみに、matrix.cppのファイルは \opencv\modules\core\src 内にあります。

 

 

すると、ブレークポイントで指定した行で使われている関数の中へ、処理が移動していきます。

 

引き続きステップイン(F11ボタンを押す)実行を行うと、さらに関数の内部へ、ステップオーバー(F10ボタンを押す)実行を行うと、関数の内部へは行かずに、次の行へと移動します。

 

そうすると、実際に行われている処理の通りに、表示される行が移動していくので、処理の流れを確認し易いかと思います。

 

ちなみに!

今回、確認したかったのはcv::imshowの処理。

 

Windowsでは画像データのメモリの幅が4の倍数バイトとなるように調整しないと正しく表示されないハズにも係わらず、C++インターフェースのcv:Matでは、メモリの幅のバイト数を示すstepの値が、必ずしも4の倍数とならないのが、とても気になっていたんです。

 

そこで、実際にモノクロ8ビット(CV_8UC1)のcv::Matをcv::imshowへ渡し、ステップイン実行してみたところ、モノクロ画像と同じ画素数の24bitのメモリを確保し(このメモリは、幅が4の倍数バイトに調整されている)、cvConvertImage関数が呼ばれ、その内部では、OpenCV内部だけで使われるicvCvt_Gray2BGR_8u_C1C3Rという関数が実行され、8bitグレーの輝度値がR,G,Bの値が同じ、24bitのカラーデータへと変換されて、Win32APIのBitBltで画像が表示されている事が分かりました。

 

つまり、cv::imshowでモノクロの画像を表示する時に関数内部では、モノクロ画像の3倍のメモリが確保され、モノクロからカラーデータへの変換が行われています。

 

って、なんて無駄なんだ~!

この辺はやっぱりIplImageの方が好きなんだよな~

 

OpenCVへ戻る

【OpenCV】スタティックリンクライブラリの使用方法

OpenCVをダウンロードすると、ビルド済みのスタティックリンクライブラリがstaticlibというフォルダ内に格納されているのですが、以前、試した時には、うまく利用する事ができずに、CMakeでビルドしていました。

 

OpenCVをスタティックリンクライブラリでビルドする方法

https://imagingsolution.net/program/opencv/build_opencv231_static_library/

 

再度、OpenCV2.4.6で試してみたところ、以下の方法でスタティックリンクライブラリを使用する事ができました。

 

まず、こちら↓

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/

よりOpenCVをダウンロードします。

 

WindowsのVer.2.4.6の場合はOpenCV-2.4.6.0.exeのファイルをダウンロードします。

 

ダウンロードしたファイルをダブルクリックすると自己解凍されますが、以下、ルートディレクトリ(c:\ )に解凍した場合を想定して説明します。

 

目的のスタティックリンクライブラリは下記フォルダに格納されています。

 

opencv
├build
├x86
│ ├vc9
│ ├vc10
│ │ ├staticlib
│ ├vc11
├x64

 

x86やx64、vc9,vc10,vc11は使用する環境に合わせて使用するフォルダを選択します。

 

まず、C++のプロジェクトを作成し、プロジェクトのプロパティで、構成すべての構成にし、構成のプロパティ→C/C++→全般→追加のインクルードディレクトリにopencv2のあるフォルダ

 

c:\opencv\build\include

 

などを指定します。(ファイルの解凍先によりディレクトリが異なります。)

 

 

次にスタティックリンクライブラリのあるフォルダの設定を行います。

こちらもプロジェクトのプロパティで、構成すべての構成にし、構成のプロパティ→リンカー→全般→追加のライブラリディレクトリ

 

c:\opencv\build\x86\vc10\staticlib

 

などを指定します。(ファイルの解凍先や開発環境によりディレクトリが異なります。)

 

x86・・・32bitプログラムを作成する場合(OSが64bitでも32bitプログラムは作成可能です。)
x64・・・64bitプログラムを作成する場合
(構成マネージャでプラットフォームをx64にするのをお忘れなく。
分からなければ、64bitOSであっても、まずはx86を使用して下さい。)
vc9・・・Visual Studio 2008で開発する場合
vc10・・・Visual Studio 2010で開発する場合
vc11・・・Visual Studio 2012で開発する場合

 

次に特定の規定のライブラリの無視というのを設定するのですが、これはDebugとReleaseで設定が違うので、構成のプロパティ→リンカー→入力→特定の規定のライブラリの無視の設定

 

構成がDebugの場合
Libcmtd.lib;msvcprtd.lib

構成がReleaseの場合
Libcmt.lib;msvcprt.lib

 

と入力します。

 

 

これで、OpenCVを使う準備ができたので、コードを下記のように書きます。

ここでのポイントはcomclt32.libファイルを追加している部分ぐらい。

以下、Canny Edge Detectorのサンプルコードです。

#include "stdafx.h"

//プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに
// opencv2のあるフォルダ(C:\opencv\build\includeなど)を追加のこと
#include "opencv2\opencv.hpp"

#pragma comment(lib,"comctl32.lib")

// バージョン名の取得
#define CV_VERSION_STR CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION) CVAUX_STR(CV_SUBMINOR_VERSION)

// libファイル名の最後の部分をReleaseとDebugで分ける
#ifdef _DEBUG
#define CV_EXT_STR "d.lib"
#else
#define CV_EXT_STR ".lib"
#endif

//プロジェクトのプロパティ⇒リンカー⇒全般 の追加のライブラリディレクトリに
// libファイルのあるフォルダ(C:\opencv\build\x86\vc10\libなど)を追加のこと
#pragma comment(lib, "opencv_core"	CV_VERSION_STR CV_EXT_STR)
#pragma comment(lib, "opencv_imgproc"	CV_VERSION_STR CV_EXT_STR)
#pragma comment(lib, "opencv_highgui"	CV_VERSION_STR CV_EXT_STR)

#pragma comment(lib, "zlib"	CV_EXT_STR)
#pragma comment(lib, "IlmImf"	CV_EXT_STR)
#pragma comment(lib, "libjasper"CV_EXT_STR)
#pragma comment(lib, "libjpeg"	CV_EXT_STR)
#pragma comment(lib, "libpng"	CV_EXT_STR)
#pragma comment(lib, "libtiff"	CV_EXT_STR)

int _tmain(int argc, _TCHAR* argv[])
{
    //画像データの読込
    cv::Mat src_img = cv::imread("lena.jpg", -1);
    if (src_img.empty()){
        return -1;
    }

    //表示ウィンドウの作成
    cv::namedWindow("src");
    cv::namedWindow("dst");

    //処理後画像データ格納用
    cv::Mat dst_img;

    //画像処理例(Canny Edge Detector)
    cv::Canny(src_img, dst_img, 100.0, 150.0);

	//画像の表示
    cv::imshow("src", src_img);
    cv::imshow("dst", dst_img);

	//キー入力待ち
    cv::waitKey (0);

	return 0;
}

(実行結果)

 

サンプルプロジェクトファイルはこちら↓

OpenCVStaticSample.zip

(OpenCV2.4.6 + Visual Studio 2010 C++ Expressのサンプルです)

 

スタティックリンクライブラリを使うと、Pathの設定が無いので、ちょっと楽!

 

OpenCVへ戻る

OpenCV2.4.3が公開されました

2012.11.2 OpenCV2.4.3が公開されました。

 

ちょっとの間だけOpenCV2.4.3RCというバージョンも公開されていたのですが、早々に正式版となりました。

 

OpenCV2.4.3(Windows版)の入手先はこちら↓

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.3/

 

変更内容についてはこちら↓

http://code.opencv.org/projects/opencv/wiki/ChangeLog

 

ちなみに、次のバージョンのOpoenCV2.4.4は3月の公開予定という事で、しばらくはこのOpenCV2.4.3の状態が続きそうです。

(参考)

http://code.opencv.org/projects/opencv/roadmap

 

The OpenCV Tutorials Release 2.4.3

http://docs.opencv.org/opencv_tutorials.pdf

The OpenCV User Guide Release 2.4.3

http://docs.opencv.org/opencv_user.pdf

 

詳細はまだ、確認していないのですが、バイナリ版ではVS11版(Visual Studio 2012版)はなく、VS9、VS10のみでした。CMakeはできるのかな??

これから、もろもろ評価予定。

 

評価中メモ

  • Visual Studio 2012(VS11)でOpenCVをビルドする事は可能
  • WITH_CUDA(CUDA5.0)でVS11でビルドしようとすると

    エラー    1    error : nvcc cannot find a supported cl version. Only MSVC 9.0 and MSVC 10.0 are supported    C:\OpenCV2.4.3\user_buid_with_cuda50_VS11\modules\core\nvcc    opencv_core

    というエラーが出る。
    →VS10でビルドすると大丈夫

【OpenCV】輪郭付文字の描画

OpenCVでモノクロの画像(8bit1ch)の上に文字を書こうとすると、文字列の色にカラーを指定できない事から、文字を何色で描画しようとも、どうしても文字が見づらくなってしまいます。

 

(コード例)

char text[64] = "Imaging Solution";

CvFont font;

// 文字のフォント
cvInitFont (&font, CV_FONT_HERSHEY_DUPLEX, 0.7, 1.0, 0, 2);

// 文字の描画
cvPutText (src, text, cvPoint (15, 30), &font, CV_RGB (0, 0, 0));

 

(文字列の表示例)

 

文字を見えやすくするには、背景を塗りつぶすとか、文字に縁取りを付けるとか、考えられますが、割と単純な発想ですが、太めのフォント文字列を描画して、同じ場所に細めのフォントで同じ文字を描画すると、文字に輪郭が付くんじゃないか?という事でやってみた例↓

 

(コード例)

char text[64] = "Imaging Solution";

CvFont font;
CvFont outline_font;

// 輪郭用のフォント(太めのフォント)
cvInitFont (&outline_font, CV_FONT_HERSHEY_DUPLEX, 0.7, 1.0, 0, 8);
// 文字のフォント
cvInitFont (&font, CV_FONT_HERSHEY_DUPLEX, 0.7, 1.0, 0, 2);

// 輪郭の描画
cvPutText (src, text, cvPoint (15, 30), &outline_font, CV_RGB (255, 255, 255));
// 文字の描画
cvPutText (src, text, cvPoint (15, 30), &font, CV_RGB (0, 0, 0));

 

(文字列の表示例)

 

と、小ネタでした。

OpenCV2.4.1が公開されました

2012.6.2 OpencV2.4.1が公開されました。

 

OpenCV2.4.1のWindows版の入手先はこちら

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.1/

 

OpenCV.2.4からOpenCV2.4.1への変更点はこちらを参照下さい。

http://code.opencv.org/projects/opencv/wiki/ChangeLog#241

日本語はこちらより

http://opencv.jp/opencv2-x-tips/changelog_from_240

 

今回の変更では、ライブラリの構成的には変更が無いので、インストール方法についてはOpenCV2.4のインストール方法を参考にlibファイルのファイル名の240の部分を241に読み替えて参考にして下さい。

 

ちなみに、今回はOpenCV2.4の公開から約1ヶ月という短い期間でOpenCV2.4.1の公開となった訳ですが、今後も約1ヶ月間ペースでのバージョンアップが予定されています。

バージョンアップの予定についてはロードマップとして公開さているので参考まで↓

http://code.opencv.org/projects/opencv/roadmap

 

OpenCV2.4の入手、ダウンロード、インストール、環境設定

2013年3月現在、OpenCVの最新バージョンはVer.2.4.4です。
OpenCV2.4.4のダウンロードは下記ページより入手して下さい。

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.4/

 

また、インストール方法はlibファイルのxxx240.lib,xxx240d.libの部分をxxx244.lib,xxx244d.libに読み替えて下さい。

 

下記はVer.2.4.0の説明です。


 

2012.5.1 OpenCV2.4の正式版が公開されました。

 

OpenCV2.3.1からの変更点は下記リンク先よりご確認下さい。

 

http://code.opencv.org/projects/opencv/wiki/ChangeLog#New-functionality

 

日本語版は下記を参照下さい。

 

OpenCV2.3.1→OpenCV2.4betaへの変更点

http://opencv.jp/opencv2-x-tips/changelog_from_231

 

OpenCV2.4beta→OpenCV2.4への変更点

http://opencv.jp/opencv2-x-tips/changelog_from_24beta

 

インストール上で気になるポイントは

●SURFおよびSIFT処理の特許が申請されている処理アルゴリズムは別のモジュール(opencv_nonfree240.dll)へ移動

●OpenCVで使用している並列化ライブラリ(TBB)がOpenCVのパッケージに同梱
注)Release版のTBBのみ、Debug実行する場合は別途TBBを入手する必要があります。

ぐらいでしょうか。

 

以下、Windows版のインストール方法について記します。

 

OpenCV2.4の入手、ダウンロード先

OpenCVの入手は下記ページよりダウンロードして下さい。

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.0/

上記リンク先へ行き、OpenCV-2.4.0.exeをクリックしてファイルをダウンロードして下さい。

 

OpenCV2.4のインストール方法

ダウンロードしたファイル(OpenCV-2.4.0.exe)をダブルクリックすると、ファイルの解凍が始まるので、ここでは c:\ に解凍する事にします。(慣れている人はどこでも構いません。)
Extract to:の部分に c:\ と入力して下さい。

 

 

ファイルを解凍すると、主な構成は下記のようになっています。

 

c:\opencv
┣ 3rdparty
┣ android
┣ build
┃┣ common
┃┃ ┗tbb
┃┃      ┣ ia32
┃┃      ┗ intel64
┃┣ gpu
┃┣ include
┃┣ python
┃┣ x64
┃┃ ┣mingw
┃┃ ┣vc9
┃┃ ┗vc10
┃┗ x86
┃  ┣mingw
┃  ┣vc9
┃  ┗vc10
┃   ┣bin
┃   ┣lib
┃   ┗staticlib
┣ data
┣ doc
┣ include
┣ module
┗ samples

 

次にダウンロードしたdllファイルをPCから使えるようにPathの設定というのを行います。

 

Pathの設定はWindowsのスタートボタンをクリック → コンピュータ右クリックプ ロパティをクリックします。

 

 

開いたウィンドウの システムの詳細設定 をク リックします。

 

 

次に詳細設定タブの環境変数のボ タンをクリックします。

 

 

次にシステム環境変数のPathを選択し、編集をクリックします。

 

 

変数値のテキストボックスの最後の部分に、OpenCVのdllファイルのあるフォルダを指定します。

 

また、別途OpenCVからTBBというライブラリも使用するので、この2つのPathを設定します。

 

32bitプログラムでVisualStudio2010を使用する場合は

 

;C:\opencv\build\x86\vc10\bin;C:\opencv\build\common\tbb\ia32\vc10

 

※もともとあった文字は消さないようにご注意ください。
最初の ; (セミコロン)を付けるのもお忘れなく。
PATHの設定後、PCを再起動して下さい。(ログオフ⇒ログインでも可)

 

別の環境にOpenCVをインストールする場合は下記の表を参考に
使用する環境に合わせてディレクトリを指定して下さい。

 

32bit、Visual Studio2008の場合 ;C:\opencv\build\x86\vc9\bin;C:\opencv\build\common\tbb\ia32\vc9
32bit、Visual Studio2010の場合 C:\opencv\build\x86\vc10\bin;C:\opencv\build\common\tbb\ia32\vc10
64bit、Visual Studio2008の場合 C:\opencv\build\x64\vc9\bin;C:\opencv\build\common\tbb\intel64\vc9
64bit、Visual Studio2010の場合 C:\opencv\build\x64\vc10\bin;C:\opencv\build\common\tbb\intel64\vc10

 

ただし、同梱されているTBBはRelease版のみのため、Debug実行すると

 

コンピュータにtbb_debug.dllが無いため・・・

 

と表示されてしまします。

Debug実行も行う場合は、別途TBBをこちら

http://threadingbuildingblocks.org/file.php?fid=77

 

のページの最新版をクリックし、Windowsの場合は tbb×××_win.zipのファイルをダウンロードし、解凍したdllファイルを上記で指定したフォルダの中へコピーして下さい。

 

64bitOSを使っていても32bitでプログラムする場合は x86 フォルダ内のbinディレクトリを指定して下さい。
64bitを使う場合は、VisualStudioのプラットフォームをx64にして下さい。

(Visual Studioの上の方(メニューの下)に表示されているWin32の部分をx64にして下さい。)

 

なんだか良く分からない場合は、OSが64bitであっても、32bit版のOpenCVを使った方がハマりにくいと思います。

 

VisualStudio2010での使用方法

使用するのはVisualStudio C++ 2010 Express以上のエディションで大丈夫です。

 

VisualStudio2010を起動し、新しいプロジェクトをクリックし、左側のメニューのWin32を選択した状態でWin32コンソールアプリケーションをクリックします。

 

適当な名前を付け、保存する場所を指定し、OKボタンをクリックします。

 

すると下記のようなソースコードが表示されます。

// OpenCV2.4Sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}

 

次にOpenCVのヘッダファイルが、今回作成したプロジェクトから参照できるように設定を行います。

 

プロジェクトの名前の部分を右クリックし、メニューのプロパティを選択します。

 

表示されたウィンドウ左上の構成を全ての構成にし、構成のプロパティ⇒C/C++⇒全般を選択して、OpenCV2のフォルダのあるディレクトリ(C:\opencv\build\include)を追加のインクルードディレクトリに指定します。

 

 

以上の設定を行い、ソース部分を下記のようにすると、ガウシアンフィルタ処理を行う簡単なサンプルプログラムが実行できると思います。

// OpenCV2.4Sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"

//プロジェクトのプロパティ⇒C/C++⇒全般 の追加のインクルードディレクトリに
// opencv2のあるフォルダ『C:\OpenCV\include』などを追加のこと
#include "opencv2\opencv.hpp"

#ifdef _DEBUG
    //Debugモードの場合
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_core240d.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_imgproc240d.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_highgui240d.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_objdetect240d.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_contrib240d.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_features2d240d.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_flann240d.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_gpu240d.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_haartraining_engined.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_legacy240d.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_ts240d.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_video240d.lib")
#else
    //Releaseモードの場合
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_core240.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_imgproc240.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_highgui240.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_objdetect240.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_contrib240.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_features2d240.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_flann240.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_gpu240.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_haartraining_engined.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_legacy240.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_ts240.lib")
    #pragma comment(lib,"C:\\opencv\\build\\x86\\vc10\\lib\\opencv_video240.lib")
#endif

int _tmain(int argc, _TCHAR* argv[])
{

    //画像データの読込
    IplImage* src_img = cvLoadImage("C:\\opencv\\samples\\c\\lena.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
    if (src_img == NULL){
        return 0;
    }

    //表示ウィンドウの作成
    cvNamedWindow("src");
    cvNamedWindow("dst");

    //処理後画像データの確保
    IplImage* dst_img = cvCreateImage(cvGetSize(src_img), src_img->depth, src_img->nChannels);

    //画像処理例(ガウシアンフィルタ)
    cvSmooth(src_img, dst_img, CV_GAUSSIAN, 9);

    //画像の表示
    cvShowImage ("src", src_img);
    cvShowImage ("dst", dst_img);

    //キー入力待ち
    cvWaitKey (0);

    //全てのウィンドウの削除
    cvDestroyAllWindows();

    //画像データの解放
    cvReleaseImage(&src_img);
    cvReleaseImage(&dst_img);

    return 0;
}

上記サンプルは32bitでVisualStudio2010で開発する場合の設定です。
環境が異なる場合は #pragma comment の部分のパスを環境に合わせて変更して下さい。

 

ちなみに、libファイルは全て必要ではなく、おおむね

 

opencv_core240、opencv_imgproc240、opencv_highgui240、opencv_objdetect240

 

の4種類ぐらいである程度動作すると思います。(使用する関数によって必要なlibファイルが決まります。)

 

SIFTもしくはSURFを使用する場合は、別途、

 

Releaseの場合:opencv_nonfree240.lib

Debugの場合  :opencv_nonfree240d.lib

 

が必要となります。

 

また、libファイルのファイル名に含まれる数字部分がOpenCVのバージョンを示し、ファイル名の最後についているdの文字がDebug用のlibファイル、dの無いファイルがRelease用のlibファイルとなっています。

 

その他

VisualStudio2005でOpenCV2.4を使用する場合は自分でOpenCV2.4をコンパイルするか、
VisualStudio2008用のライブラリを使用する場合は
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)
VisualStudio2010用のライブラリを使用する場合は
Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x86)

 

が必要となります。ただし、VisualStudio2005からはReleaseモードのみ実行可能なので、Debugモードでも実行したい場合はExpress Editionでも構わないのでVisualStudioをインストールすると実行可能です。

 

OpenCV2.4でCMakeを使って自分でOpenCVをコンパイルする場合は、OpenCV2.3の場合の説明ですが、下記ページを参照下さい。

 

https://imagingsolution.net/program/opencv/opencv2-3/opencv2-3-downlaod-install/#compile-opencv

 

基本的にOpenCVなどのライブラリを使う場合は、ライブラリの3点セット(*.dll、*.lib、*.h)をいかに使うか?がポイントになります。

 

余裕のある方は下記ページも参考にしてみて下さい。

 

ライブラリの使用方法、VisualStudioの設定方法

 

トラブルシューティング

●「コンピュータにopencv_core240d.dllがないため、プログラムを開始できません。・・・」と表示される。

 

 

このエラーメッセージはdllの参照設定が正しくできていない可能性があります。
Pathの設定を確認し、設定したらPCの再起動をしてみて下さい。
コンピュータにtbb_debug.dllが無いため・・・と表示されている場合はTBBのライブラリ(*.dll)のdebug版のファイルを入手し、指定したPathへdllファイルが入っているか?Pathの設定が正しいか?deご確認下さい。

 

error LNK2019: 未解決の外部シンボル・・・と表示される。

この未解決のシンボルのエラーの場合、libファイルの設定が不足している場合が考えられます。

 

libファイルの参照設定が正しいか?(本記事では、ソースコード中に記載した#pragma commentの部分)をご確認下さい。

 

fatal error C1083: include ファイルを開けません。と表示される。

ヘッダファイルの参照設定が正しくない可能性があります。

 

プロジェクトのプロパティで構成のプロパティC/C++全般を選択して、OpenCV2のフォルダのあるディレクトリ(C:\opencv\build\include)を追加のインクルードディレクトリに指定しているか?ご確認下さい。※includeというフォルダが2か所あるのでご注意下さい。

 

Visual Studio Expressで64bit対応するには?

Expressでは標準的には64bitプログラムを作成することはできないようです。
ただし、SDKインストールすることで可能という情報もあるので、試してみては如何でしょうか?

方法 : Visual C++ プロジェクトを 64 ビット プラットフォーム用に設定する

 

OpenCVへ戻る

OpenCV-2.4.0-GPU-demos-packが公開

OpenCV2.4Betaの公開に引き続き、GPU(CUDA4.1)を使ったOpenCV処理のデモソフト(OpenCV-2.4.0-GPU-demos-pack)が公開されました。

 

入手先はこちら

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.0/

 

このデモを動かすにはCUDA4.1が必要で、インストールされていない場合は、こちら↓

http://developer.nvidia.com/cuda-toolkit-41

 

のサイトの少し下の部分 Developer Drivers Downloads より環境に合わせたドライバをダウンロード、インストールする事で、OpenCV-2.4.0-GPU-demos-packが動作可能となります。