// OpenCV 3系 共通ヘッダーファイル
// T.Nakaguchi
#pragma once
// ヘッダーファイル
#pragma warning(disable: 4819)
#include <opencv2/opencv.hpp>
#pragma warning(default: 4819)
// バージョン取得
#define CV_VERSION_STR CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION) CVAUX_STR(CV_SUBMINOR_VERSION)
// ビルドモード
#ifdef _DEBUG
#define CV_EXT_STR "d.lib"
#else
#define CV_EXT_STR ".lib"
#endif
// ライブラリのリンク(不要な物はコメントアウト)
#define PRE_COMPILE 0 // インストール版なら 1 個別ライブラリ使用時は 0
#define PREHEAD "opencv_"
#if PRE_COMPILE
// OpenCV3.0 インストール版
#pragma comment(lib, PREHEAD "world" CV_VERSION_STR CV_EXT_STR) // 全て
#pragma comment(lib, PREHEAD "ts" CV_VERSION_STR CV_EXT_STR) // 映像関連
#else
// 個別のライブラリ指定 (CmakeやStatic版使用時など)
// 基本モジュール
#pragma comment(lib, PREHEAD "world" CV_VERSION_STR CV_EXT_STR) // 基本機能
//#pragma comment(lib, PREHEAD "core" CV_VERSION_STR CV_EXT_STR) // 基本機能
//#pragma comment(lib, PREHEAD "imgproc" CV_VERSION_STR CV_EXT_STR) // 画像処理
//#pragma comment(lib, PREHEAD "imgcodecs" CV_VERSION_STR CV_EXT_STR) // 画像ファイル入出力
//#pragma comment(lib, PREHEAD "videoio" CV_VERSION_STR CV_EXT_STR) // 動画ファイル入出力
//#pragma comment(lib, PREHEAD "highgui" CV_VERSION_STR CV_EXT_STR) // 高機能GUI
//#pragma comment(lib, PREHEAD "video" CV_VERSION_STR CV_EXT_STR) // 動画像解析
//#pragma comment(lib, PREHEAD "calib3d" CV_VERSION_STR CV_EXT_STR) // カメラ校正と三次元再構築
//#pragma comment(lib, PREHEAD "features2d" CV_VERSION_STR CV_EXT_STR) // 画像特徴解析
//#pragma comment(lib, PREHEAD "objdetect" CV_VERSION_STR CV_EXT_STR) // 物体検出
//#pragma comment(lib, PREHEAD "ml" CV_VERSION_STR CV_EXT_STR) // 機械学習
//#pragma comment(lib, PREHEAD "flann" CV_VERSION_STR CV_EXT_STR) // 多次元クラスタリングと検索
//#pragma comment(lib, PREHEAD "photo" CV_VERSION_STR CV_EXT_STR) // 計算機写真
//#pragma comment(lib, PREHEAD "stitching" CV_VERSION_STR CV_EXT_STR) // 画像接続
//#pragma comment(lib, PREHEAD "hal" CV_VERSION_STR CV_EXT_STR) // ハードウェア高速化
//#pragma comment(lib, PREHEAD "shape" CV_VERSION_STR CV_EXT_STR) // 形状一致検出
//#pragma comment(lib, PREHEAD "superres" CV_VERSION_STR CV_EXT_STR) // 超解像
//#pragma comment(lib, PREHEAD "videostab" CV_VERSION_STR CV_EXT_STR) // 動画像安定化
//#pragma comment(lib, PREHEAD "vis" CV_VERSION_STR CV_EXT_STR) // 3次元可視化
// 拡張モジュール
//#pragma comment(lib, PREHEAD "adas" CV_VERSION_STR CV_EXT_STR) // 先進的デバイスサポート
//#pragma comment(lib, PREHEAD "aruco" CV_VERSION_STR CV_EXT_STR) // AR用マーカー
//#pragma comment(lib, PREHEAD "bgsegm" CV_VERSION_STR CV_EXT_STR) // 改良型背景・前景識別
//#pragma comment(lib, PREHEAD "bioinspired" CV_VERSION_STR CV_EXT_STR) // 生体に基づく視覚的処理
//#pragma comment(lib, PREHEAD "ccalib" CV_VERSION_STR CV_EXT_STR) // カスタムパターンによるカメラ校正と三次元再構成
//#pragma comment(lib, PREHEAD "cvv" CV_VERSION_STR CV_EXT_STR) // 対話的視覚的デバッグGUI
//#pragma comment(lib, PREHEAD "datasets" CV_VERSION_STR CV_EXT_STR) // 多種データセット取り扱いフレームワーク
//#pragma comment(lib, PREHEAD "dnn" CV_VERSION_STR CV_EXT_STR) // DNNサポート
//#pragma comment(lib, PREHEAD "face" CV_VERSION_STR CV_EXT_STR) // 顔認識
//#pragma comment(lib, PREHEAD "latentsvm" CV_VERSION_STR CV_EXT_STR) // Latent-SVM
//#pragma comment(lib, PREHEAD "line_descriptor" CV_VERSION_STR CV_EXT_STR) // 線検出のバイナリ表現
//#pragma comment(lib, PREHEAD "matlab" CV_VERSION_STR CV_EXT_STR) // MATLABブリッジ
//#pragma comment(lib, PREHEAD "optflow" CV_VERSION_STR CV_EXT_STR) // オプティカルフロー
//#pragma comment(lib, PREHEAD "reg" CV_VERSION_STR CV_EXT_STR) // 画像位置合わせ
//#pragma comment(lib, PREHEAD "rgbd" CV_VERSION_STR CV_EXT_STR) // RGB-深度カメラ
//#pragma comment(lib, PREHEAD "saliency" CV_VERSION_STR CV_EXT_STR) // 画像 顕著性 API
//#pragma comment(lib, PREHEAD "surface_matching" CV_VERSION_STR CV_EXT_STR) // 表面モデル一致検出
//#pragma comment(lib, PREHEAD "text" CV_VERSION_STR CV_EXT_STR) // シーン文字検出と認識
//#pragma comment(lib, PREHEAD "tracking" CV_VERSION_STR CV_EXT_STR) // 追跡
//#pragma comment(lib, PREHEAD "xfeatures2d" CV_VERSION_STR CV_EXT_STR) // 拡張版 画像特徴解析
//#pragma comment(lib, PREHEAD "ximgproc" CV_VERSION_STR CV_EXT_STR) // 拡張版 画像処理
//#pragma comment(lib, PREHEAD "xobjdetect" CV_VERSION_STR CV_EXT_STR) // 拡張版 物体検出
//#pragma comment(lib, PREHEAD "xphoto" CV_VERSION_STR CV_EXT_STR) // 拡張版 計算機写真
#endif
//using namespace cv;
// 複数画像を連結表示
//void imShowMulti(String winname, std::vector<Mat>& imgs, unsigned int cols, unsigned int rows, Size imgsize, unsigned int border)
//{
// if (imgs.size() < 1 || cols < 1 || rows < 1) return;
//
// unsigned int w = imgsize.width + border, h = imgsize.height + border;
// Mat board(h * rows + border, w * cols + border, CV_8UC3, CV_RGB(128, 128, 128));
// for (unsigned int r = 0, i = 0; r < rows; r ++) {
// for(unsigned int c = 0; c < cols; c ++, i ++) {
// Rect roi_rect = Rect(c * w + border, r * h + border, imgsize.width, imgsize.height);
// Mat roi(board, roi_rect);
// if (i < imgs.size()) {
// if (imgs[i].type() == CV_8UC3) {
// resize(imgs[i], roi, imgsize);
// } else if (imgs[i].type() == CV_8UC1) {
// Mat c3;
// cvtColor(imgs[i], c3, COLOR_GRAY2BGR);
// resize(c3, roi, imgsize);
// } else {
// putText(roi, "Color mode not matched", Point(20,20), CV_FONT_HERSHEY_COMPLEX, 0.5, CV_RGB(0,0,0));
// }
// } else {
// putText(roi, "No image", Point(20,20), CV_FONT_HERSHEY_COMPLEX, 0.5, CV_RGB(0,0,0));
// }
// }
// }
// imshow(winname, board);
//}