最終更新 2024.04.01
http://www.wakayama-u.ac.jp/~chen/opencv/opencvinst.html にインストール方法が載っている。 3.3 はよくわからない 2.4.13 は VC 2015 のランタイムが必要 2.4.9 は VC 2010 2012 に対応している。 ここでは VC++ 2010 を使うので、2.4.9 を使う opencv は exe をクリックするとフォルダに展開される インストールの必要はない。 他のパソコンでも動かすことを考えて、ここでは c:\ols\opencv2.4.9 以下に配置する。
システム環境変数 PATH に C:\ols\opencv2.4.9\build\x86\vc10\bin を付け加える。 Windows10 の場合、 スタートを右クリック --- システム --- バージョン情報 --- システム情報 --- システムの詳細設定 --- 環境変数 ユーザー環境変数に加えると "" がついてしまい、うまく設定できない。
(1) プログラムの先頭での指定 #include <opencv2/opencv.hpp> #include <stdio.h> #include <string.h> #include <Windows.h> #include <iostream> #include <random> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #pragma comment(lib,"opencv_core249d.lib") #pragma comment(lib,"opencv_imgproc249d.lib") #pragma comment(lib,"opencv_highgui249d.lib") #pragma comment(lib,"opencv_video249d.lib") #pragma comment(lib,"opencv_objdetect249d.lib") #pragma comment(lib,"opencv_legacy249d.lib") #pragma comment(lib,"opencv_calib3d249d.lib") #pragma comment(lib,"opencv_contrib249d.lib") #pragma comment(lib,"opencv_features2d249d.lib") #pragma comment(lib,"opencv_flann249d.lib") #pragma comment(lib,"opencv_ml249d.lib") #pragma comment(lib,"opencv_gpu249d.lib") using namespace std; using namespace cv; (2) ディレクトリの設定 プロジェクト --- ○○○のプロパティ --- 構成プロパティ --- C/C++ --- 全般 追加のインクルードディレクトリ C:\ols\opencv2.4.9\build\include プロジェクト --- ○○○のプロパティ --- 構成プロパティ --- リンカー 追加のライブラリディレクトリ C:\ols\opencv2.4.9\build\x86\vc10\lib (3) スタックを 10MB にする スタックサイズが足らないというエラーが出ることがある。 その場合の回避方法。 プロジェクト --- ○○のプロパティ --- 構成プロパティ --- リンカー --- システム --- スタックのサイズの設定 10 000 000 (4) 実行時のディレクトリは起動方法によって異なる。 exe ファイルをダブルクリック ----- exe があるディレクトリ Visual Studio から実行 ----- cpp があるディレクトリ
新規作成 --- CLR コンソールアプリケーション
古いプログラムを使いまわしするとき、unicode でセーブしろという エラーが出ることがある。Shift JIS を使ったファイルを使うとき、 プロジェクト --- プロパティ --- 構成プロパティ --- 全般 -- 文字セット 「マルチバイト文字セットを使用する」
opencv\sources\samples\c++ opencv\sources\samples\python2 などにある。
> カメラの使い方 cv::VideoCapture cap; cv::Mat frame,image; cap.open(0); if ( !capture.isOpened() ){ cout << "cannot open camera.\n"; return 1; } cv::namedWindow("win"); cap >> frame; if ( frame.empty() ){ cout << "cannot get frame.\n"; return 1; } while(1){ cap >> frame; frame.copyTo(image); imshow("win",image); key cv::waitKey(1); if ( key == 'q' ) break; } > 画像を明示的に作る cv::Mat image(HEIGHT, WIDTH, CV_8UC4); cv::Mat image(HEIGHT, WIDTH, CV_8UC3); cv::Mat image(HEIGHT, WIDTH, CV_8UC1); 高さと幅の順序が通常と逆なのに注意 > ピクセル操作 cv::Mat image; 1 つめの方法 UCHAR* data; index = ( y * width + x ) * 4; data = &image.data[index]; data[0] = b; data[1] = g; data[2] = r; 2 つめの方法 cv::Vec3b p; p.val[0] = b; p.val[1] = g; p.val[2] = r; image.at<cv::Vec3b>(i,j) = p; > 円を書く cv::Point cvpoint; cvpoint.x = 100; cvpoint.y = 200; circle(image, cvpoint, radius, Scalar(0,0,255),-1,8);
中村薫氏の本の p.31 にそれらの設定をプロジェクトプロパティファイルに 落とす方法が書いてある。 「ツール」→「設定」→「上級者用の設定」 左側の 「プロパティマネージャ」→「新しいプロパティシートの追加」でセーブ 「プロパティマネージャ」→「既存のプロパティシートの追加」で読み込み?