■CALENDAR■
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30   
<<前月 2021年09月 次月>>
■LOGIN■
現在のモード: ゲストモード
USER ID:
USER PW:
■ADMIN■
ADMIN ID:
ADMIN PW:
■NEW ENTRIES■
■CATEGORIES■
■BY CATEGORY■
■ARCHIVES■
■PROFILE■
■POWERED BY■
BLOGN(ぶろぐん)
BLOGNPLUS(ぶろぐん+)
■OTHER■

OpenCVビルド+VTK
VTK_DIRは, D:/Program Files/VTK/lib/cmake/vtk-8.1 を指定.

| http://www.ccn.yamanashi.ac.jp/~tsuyoshi-s/blogn/blognplus/index.php?e=70 |
| C/C++ | 02:12 PM | comments (0) | trackback (0) |
NMAKE
NMAKE でビルドする場合,windows.h関係のライブラリは, User32.lib を追加する.

| http://www.ccn.yamanashi.ac.jp/~tsuyoshi-s/blogn/blognplus/index.php?e=68 |
| C/C++ | 07:20 PM | comments (0) | trackback (0) |
OpenCVのインストール手順3
PDF
### OpenCV install メモ

以下の2種類のやりかたがある.  
(A)opencv_world341.libを使う方法  
  ライブラリopencv_world341.lib(全部入っている)というlibを使う.  
(B)各ライブラリを個別に利用  
  ユーザーが各ライブラリを個別に指示できるようにコンパイルする.  

個人的には,(B)がいい気がする.

---
#### (A)opencv_world341.libを使う方法
[1]OpenCVのダウンロード  
  以下のURLからDL.  
    https://sourceforge.net/projects/opencvlibrary/files/opencv-win/  
  から opencv-3.4.1-vc14_vc15.exeをDL(20180423時点)

[2]CドライブにOpenCVのフォルダ作成する.  
  C:\OpenCV

[3]DLしたopencv-3.4.1-vc14_vc15.exeをダブルクリック  
 ・解凍先を選択-->D:\OpenCV\source とした.  
 ・HDDが1つのノートPCの場合,C:\OpenCV\source とする.  
 ・opencvというフォルダが作られるので,OpenCV3.4.1に名前を変更する.  
 ・buildとsourcesという2つのフォルダが出現する.  

[4]シンボリックリンクをはる.  
 (1)コマンドプロンプトを管理者権限で起動  
 (2)cd C:\OpenCV  
 (3)mklink /D include D:\OpenCV\source\OpenCV3.4.1\build\include  
 (4)mklink /D bin D:\OpenCV\source\OpenCV3.4.1\build\x64\vc14\bin  
   vc14のところは,インストールしているVSのバージョンで異なる.  
   VisualStudio 2015--->vc14  
   VisualStudio 2017--->vc15  
 (5)mklink /D lib D:\OpenCV\source\OpenCV3.4.1\build\x64\vc14\lib  
   vc14のところは,インストールしているVSのバージョンで異なる.  
   VisualStudio 2015--->vc14  
   VisualStudio 2017--->vc15  

ちなみに,Visual C++だと以下.

|  製品名         |  製品バージョン  |  内部バージョン  |  _MSC_VER    |  リリース  |
| :---:           | :---:            | :---:            | :---:        | :---:      |
| Visual C++ 2012 | 2012             | 11.0             | 1700         | 2012年     |
| Visual C++ 2013 | 2013             | 12.0             | 1800         | 2013年     |
| Visual C++ 2015 | 2015             | 14.0             | 1900         | 2015年     |
| Visual C++ 2017 | 2017             | 14.1             | 1910         | 2017年     |


 (6)環境変数に C:\OpenCV\bin を追加.  
 (7)再起動  
 (8)コード
```
  ReleaseModeの場合
  #pragma comment(lib,"C:\\OpenCV\\lib\\opencv_world341.lib)
  DebugModeの場合
  #pragma comment(lib,"C:\\OpenCV\\lib\\opencv_world341d.lib)
```
  をコードに書き込めば,リンクしてくれる.



#### (B)各ライブラリを個別に利用
[1][2]までは,一緒.  
[3]CMakeをhttps://cmake.org/download/ からダウンロードする.  
  cmake-3.11.1-win64-x64.msi をダウンロードした.(20180423時点)  
  インストール.  
[4]CMakeでslnを作成  
 (1)Where is the source code:D:\OpenCV\source\OpenCV3.4.1\sources  
   と入力.あるいは,Brouse Source...ボタンを押して選択.  
 (2)Where to build the binaries:D:/OpenCV/source/OpenCV3.4.1/sources/build  
   と入力  
 (3)Configureボタンを押す.  
 (4)Build directory does not exist, should I create it?  
   と言われたら,Yesボタンを押す.  
 (5)Specify the generator for this projectには,自分の環境のVisualStudioのバージョンを選ぶ.  
   "Visual Studio 14 2015 Win64"を選択した.  
   Finishボタンを押す.--->色々とcheckしてくれる.  
 (6)特に追加でビルドするのでなければ,Generateボタンを押す.  
 (7)slnができるので,CMakeは閉じて良い.  
[5]OpenCVのビルド  
 (1)D:\OpenCV\source\OpenCV3.4.1\sources\build に移動.  
 (2)OpenCV.slnをVisualStudio2015で開く.  
 (3)Releaseモードしか使わないので,メニュー下のモード切替を"Debug"-->"Release"にする.  
 (4)メニューのビルド→ソリューションのビルド  
 (5)終わったら,左メニューのINSTALLプロジェクトを右クリック→ビルド  

[6] シンボリックリンク
 ビルドされたファイル群は,
```
 D:\OpenCV\source\OpenCV3.4.1\sources\build\install\x64\vc14\bin
 D:\OpenCV\source\OpenCV3.4.1\sources\build\install\x64\vc14\lib
```
にできている.そこへリンクを張ればOK.  

```
コマンドプロンプト管理者モードで
cd c:\OpenCV
>mklink /D bin D:\OpenCV\source\OpenCV3.4.1\sources\build\install\x64\vc14\bin
>mklink /D lib D:\OpenCV\source\OpenCV3.4.1\sources\build\install\x64\vc14\lib
```

上記のリンクは,C:\OpenCV以下にbin, lib, includeというフォルダを作成し,ビルドしたファイル群とヘッダーファイルをコピー(移動)でもOK.

[7] コード
 cv_lib_ver.hを使うと便利.  
```
//cv_lib_ver.h
//20170302

//OpenCVのインストールDIR
#ifndef LIB_DIR
#define LIB_DIR	"C:\\OpenCV\\lib\\"
#endif


//OpenCVのバージョン
#ifndef _CV_VER
#define _CV_VER "341"
#endif



#ifdef _CVBLOB
#ifdef _DEBUG
#pragma comment(lib,"C:\\OpenCV\\cvblob\\lib\\x64\\cvblob.lib")
#else
#pragma comment(lib,"C:\\OpenCV\\cvblob\\lib\\x64\\cvblob.lib")
#endif
#endif



// #pragma の引数になる識別子と文字列を作成するマクロ.
#ifdef _DEBUG
#define OPENCV_COMMENT_LIB_FNAME(name) \
comment(lib, LIB_DIR"opencv_"name""_CV_VER"d.lib")
#else
#define OPENCV_COMMENT_LIB_FNAME(name) \
comment(lib, LIB_DIR"opencv_"name""_CV_VER".lib")
#endif


//*****不要なライブラリはコメントにする.*****

//メモリ確保/解放,行列,演算など
#define _CV_CORE_	
//画像処理,一般的なフィルタ処理など
#define _CV_IMGPROC_	
//ウィンドウなどのGUI,ファイル読込/保存,ビデオファイル,カメラなど
#define _CV_HIGHGUI_	
//サポートベクタマシン,ブースティングなどの機械学習
#define _CV_ML_
//SURF,FASTなどの特徴抽出
#define _CV_FEATURES2D_	
//前景/背景分離(background_segm.hpp)
#define _CV_VIDEO_	
//Haar,LBP,HOGなどのオブジェクト検出器
#define _CV_OBJDETECT_	
//カメラキャリブレーション,ステレオカメラなど
#define _CV_CALIB3D_	
//高速最近傍処理(FLANN)など
#define _CV_FLANN_	
//肌検出,MeanShiftなど完全な状態ではない
//#define _CV_CONTRIB_	
//旧関数との互換用
//#define _CV_LEGACY_	
//GPU(CUDA)による行列演算,画像処理など
//#define _CV_GPU_	
//VTKによるPointCloud処理
#define _CV_VIZ_	

//imread,imwrite
#define _CV_IMGCODECS_

//*************************
//メモリ確保/解放,行列,演算,描画など
//core_c.h (C言語用)
//core.hpp (C++用)
#ifdef _CV_CORE_
#pragma OPENCV_COMMENT_LIB_FNAME("core")
#endif


// ライブラリのリンク
//情報ソース  画像処理ソリューション
//http://imagingsolution.blog107.fc2.com/blog-entry-275.html

//画像処理,一般的なフィルタ処理など
//imgproc_c.h (C言語用)
//imgproc.hpp (C++用)
#ifdef _CV_IMGPROC_
#pragma OPENCV_COMMENT_LIB_FNAME("imgproc")
#endif

//ウィンドウなどのGUI,ファイル読込/保存,ビデオファイル,カメラなど
//highgui_c.h (C言語用),highgui.hpp (C++用)
#ifdef _CV_HIGHGUI_
#pragma OPENCV_COMMENT_LIB_FNAME("highgui")
#endif

#ifdef _CV_IMGCODECS_
#pragma OPENCV_COMMENT_LIB_FNAME("imgcodecs")
#endif

//サポートベクタマシン,ブースティングなどの機械学習
//ml.hpp
#ifdef _CV_ML_
#pragma OPENCV_COMMENT_LIB_FNAME("ml")
#endif

//SURF,FASTなどの特徴抽出
//features2d.hpp
#ifdef _CV_FEATURES2D_
#pragma OPENCV_COMMENT_LIB_FNAME("features2d")
#endif

//前景/背景分離(background_segm.hpp)
//トラッキング(tracking.hpp)
#ifdef _CV_VIDEO_
#pragma OPENCV_COMMENT_LIB_FNAME("video")
#endif

//Haar,LBP,HOGなどのオブジェクト検出器
//objdetect.hpp
#ifdef _CV_OBJDETECT_
#pragma OPENCV_COMMENT_LIB_FNAME("objdetect")
#endif

//カメラキャリブレーション,ステレオカメラなど
//calib3d.hpp
#ifdef _CV_CALIB3D_
#pragma OPENCV_COMMENT_LIB_FNAME("calib3d")
#endif

//高速最近傍処理(FLANN)など
//flann.hpp
#ifdef _CV_FLANN_
#pragma OPENCV_COMMENT_LIB_FNAME("flann")
#endif

//肌検出,MeanShiftなど完全な状態ではない
//contrib.hpp
//#ifdef _CV_CONTRIB_
//#pragma OPENCV_COMMENT_LIB_FNAME("contrib")
//#endif

//旧関数との互換用
//legacy.hpp
//#ifdef _CV_LEGACY_
//#pragma OPENCV_COMMENT_LIB_FNAME("legacy")
//#endif

//GPU(CUDA)による行列演算,画像処理など
//gpu.hpp
//#ifdef _CV_GPU_
//#pragma OPENCV_COMMENT_LIB_FNAME("gpu")
//#endif

//VTKによるPointCloud処理
//viz/vizcore.hpp
#ifdef _CV_VIZ_
#pragma OPENCV_COMMENT_LIB_FNAME("viz")
#endif

```




| http://www.ccn.yamanashi.ac.jp/~tsuyoshi-s/blogn/blognplus/index.php?e=65 |
| C/C++ | 01:07 PM | comments (0) | trackback (0) |
シーケンスデータの読み込み
read_sequencedat.cpp
read_sequencedat.h



//シーケンスデータの読み込み
if( !ReadSequencedat("XXXXX.dat") ) return 0;


| http://www.ccn.yamanashi.ac.jp/~tsuyoshi-s/blogn/blognplus/index.php?e=58 |
| C/C++ | 07:36 PM | comments (0) | trackback (0) |
Option check
check_options.cpp
check_options.h



char options[32];

// オプションがあるかどうかチェック
if( extract_options(argc,argv,"-im", options)!=-1 ){//オプションに -im スイッチがあれば
sprintf(imfilename,options); //<-optionsには,-imのあとの文字列が入っている.
}


| http://www.ccn.yamanashi.ac.jp/~tsuyoshi-s/blogn/blognplus/index.php?e=57 |
| C/C++ | 07:15 PM | comments (0) | trackback (0) |
Linux環境でのOpenCVビルド

Linux環境でのOpenCVビルド



| http://www.ccn.yamanashi.ac.jp/~tsuyoshi-s/blogn/blognplus/index.php?e=56 |
| C/C++ | 12:01 PM | comments (0) | trackback (0) |
Linuxでターミナルウィンドウの移動
Linuxでターミナルウィンドウの移動をする場合,wmctrlを使う.
インストールが必要.apt-get install wmctrl

コードで書く場合,systemと組み合わせる.


#include < stdlib.h >

int
main()
{
	char command[128];
	//                                     g,X,Y,  W,H 
	sprintf(command,"wmctrl -r :ACTIVE: -e 0,0,0,600,400");

	system(command);
	return 0;
}
ちなみに,
#include < sys/ioctl.h >
#include < stdio.h >
#include < unistd.h >

int main (int argc, char **argv)
{
    struct winsize w;
    ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);

    printf ("lines %d\n", w.ws_row);
    printf ("columns %d\n", w.ws_col);
    return 0;
}

でウィンドウのサイズやらが取得できる.

| http://www.ccn.yamanashi.ac.jp/~tsuyoshi-s/blogn/blognplus/index.php?e=55 |
| C/C++ | 10:56 AM | comments (0) | trackback (0) |
VisualStudioで64ビットプログラム

プロジェクト右クリック→プロパティ

・構成→すべての構成にする
・構成マネージャ→アクティブソリューションプラットホーム
→<新規作成>→新しいプラットフォームを入力または選択してください→x64

にする.



| http://www.ccn.yamanashi.ac.jp/~tsuyoshi-s/blogn/blognplus/index.php?e=52 |
| C/C++ | 11:42 AM | comments (0) | trackback (0) |
OpenCVのVC++でのinclude path
プロジェクトのプロパティ→構成プロパティ→C/C++→コマンドライン→追加のオプションに以下を必要な分だけ追記

/I"C:\OpenCV\include" /I"C:\OpenCV\include\opencv" /I"C:\OpenCV\include\opencv2" /I"C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\inc"


PCL関係
/I"C:\Program Files\PCL 1.8.0\include\pcl-1.8" /I"C:\Program Files\PCL 1.8.0\3rdParty\Boost\include\boost-1_61" /I"C:\Program Files\PCL 1.8.0\3rdParty\Eigen\eigen3" /I"C:\Program Files\PCL 1.8.0\3rdParty\VTK\include\vtk-7.0"  -D_SCL_SECURE_NO_WARNINGS




| http://www.ccn.yamanashi.ac.jp/~tsuyoshi-s/blogn/blognplus/index.php?e=51 |
| C/C++ | 11:27 AM | comments (0) | trackback (0) |
OpenCV+VTK7
OpenCV2.4.12\sources\cmake\OpenCVDetectVTK.cmake

find_package(VTK QUIET COMPONENTS vtkRenderingOpenGL vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport NO_MODULE)
 ↓
find_package(VTK QUIET COMPONENTS vtkRenderingOpenGL2 vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport NO_MODULE)
に修正



VTK7.1を使ってopencv_vizをコンパイルしようとすると,vtkOBJReader::New()等の実体が無くてLNK2019が出る.
(情報ソース http://qiita.com/yacohana/items/488d4b2be32fa9c83b46)

これはvtkIOGeometry.libがリンクされていないことによるもので,cmake\OpenCVDetectVTK.cmakeがVTK7に対応していないから.

cmake\OpenCVDetectVTK.cmakeの
# VTK 6.x components
find_package(VTK QUIET COMPONENTS vtkRenderingOpenGL vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport NO_MODULE)
↓
find_package(VTK QUIET COMPONENTS vtkRenderingOpenGL2 vtkInteractionStyle vtkRenderingLOD vtkIOPLY vtkFiltersTexture vtkRenderingFreeType vtkIOExport vtkIOGeometry NO_MODULE)
に修正



| http://www.ccn.yamanashi.ac.jp/~tsuyoshi-s/blogn/blognplus/index.php?e=50 |
| C/C++ | 10:58 AM | comments (0) | trackback (0) |
PAGE TOP ↑