Forum

14 1月 2010 Under:

“Forum” への126件のコメント

  1. テックちゃん より:

    ・OpenCVの各種リファレンス,とくに Python リファレンスと,
    ・OpenCV逆引きリファレンス
    につきまして,Sphinxで生成しているとのことですが,PDF版(もしくはソース)は配布しておりませんでしょうか.
    よろしくお願いします.

  2. ponpon より:

    こんにちは
    現在パーティクルフィルタを使った物体追跡のプログラムを作成しようと考えています。
    OpenCVのCvConDensationのサンプルコードをそのまま実行したところ、以下のような問題が生じました。

    ・粒子がランダムに動かず、斜め線上(原点方向から対角方向)に配置されてしまう。
    ・しばらくすると線状になった粒子が画面外に流れて、消える。
    ・正常に動作する場合と、上記のような問題が生じる場合がある。しかも再現性がない。

    同様の現象が起きた方はいらっしゃいますか?
    また、原因と対処方法をご存じの方がいらっしゃいましたらご教授お願い致します。

    環境は以下の通りです。
    ・OpenCV2.4.5
    ・Visual Studio 2010 C++
    ・Windows7 Home Premium 64bit
    ・Logicool Qcam Orbit AF QCAM-200RX


    参考までに
    ・Debug、Releaseどちらも同様の現象が起きました。
    ・同じ端末で、OpenCV2.2.0でも同様の現象が起きました。
    ・WindowsXPの端末を使った場合、上記の問題は起きず正常に動作しました。
    ので、OSの違いに原因があるような気がするのですが、それ以上のことはよくわかりませんでした。

  3. boxes より:

    こんにちは、いまopencvを使って画像処理の勉強をしています。
    サンプルプログラムを動かしてそれを見ながらやっています。
    ですので、あまり知識がないのですが
    二値画像は白と黒でできているのはわかったのですが、それを表のような感じに表示することはできないでしょうか?
    例えばこんな感じです。

    B B B B W
    W B W W B
    W B W B W

    のような感じに表現したいのですが・・・。どうやって作成したらいいのかわからないのでアドバイスをお願いします。

    • anobiidae より:

      1. 要素アクセス
      2. 表形式での出力(文字出力)
      この点はいかがでしょうか?
      半角の大なり・少なりが化けそうなので全角にしてあります。

      #include <opencv2/opencv.hpp>
      #include <opencv2/highgui/highgui.hpp>

      cv::Mat bin2AA(cv::Mat src){
      int csize = 8;
      double fontScale = 0.30 * (double) csize / 8.0; // Heuristic

      cv::Mat dst( src.rows * csize, src.cols * csize,
      CV_8UC1, cv::Scalar(0) ) ;

      for(int y = 0; y < src.rows; y++){
      for(int x = 0; x < src.cols; x++){
      uchar value = src.at(y,x);
      cv::putText(dst,
      (value == 0)?”B”:”W”,
      cv::Point(x * csize , (y+1) * csize ),
      cv::FONT_HERSHEY_SIMPLEX,
      fontScale,
      cv::Scalar(255) );
      }
      }
      return dst;
      }

      int main(){
      cv::namedWindow(“binImage”);
      cv::namedWindow(“AAImage”);

      cv::Mat lena = cv::imread(“lena.jpg”,0);
      cv::resize(lena, lena, cv::Size(64, 64 ) );
      cv::Mat binLena;
      cv::threshold(lena,binLena, 128, 255, cv::THRESH_BINARY);
      cv::Mat AALena = bin2AA(binLena);
      cv::imshow(“binImage”, binLena );
      cv::imshow(“AAImage”, AALena );
      cv::waitKey();

      return 0;
      }

    • mochizuki より:

      ずっと昔のことなので、返信に意味があるかはさておいて、、

      >こんにちは、いまopencvを使って画像処理の勉強をしています。
      >サンプルプログラムを動かしてそれを見ながらやっています。
      >ですので、あまり知識がないのですが
      >二値画像は白と黒でできているのはわかったのですが、それを表のような感じに表示することはできないでしょうか?
      >例えばこんな感じです。
      >B B B B W
      >W B W W B
      >W B W B W
      >のような感じに表現したいのですが・・・。どうやって作成したらいいのかわからないのでアドバイスをお願いします。

      http://cv.cellstat.net/opencv_app/color/hue.html が参考になると思います。Matのimgに対して、dataを用いてimg.data y * img.step + x * img.elemSize() + 1 ] というようにすれば座標(x,y)の色が取り出せます。2値画像であれば0と255で構成されるので、ifを使って判別すると良いと思います。

  4. ablamsoap より:

    はじめまして。
    OpenCV 2.2.0を利用しています。
    画像の一部をコピーするためにcopyToでマスクを指定しています。
    8bit画像では問題ないのですが、16bit画像だと正しい範囲をコピーできません。
    copyToが適用できる画像の型に制約があるのでしょうか。
    情報をお持ちの方がいらっしゃいましたらご教授ください。宜しくお願いします。

  5. T.M より:

    【OpenCV cvCaptureFromAVIのエラーについて】
    はじめまして。

    ARMのボード上でOpenCVのAPI cvCaptureFromAVI() を使ってAVIファイル(MJPEG)を読み出そうとしています。

    ボード上でコマンドラインからFFMPEGを使用して、MJPEGのAVIファイルが作成されることは確認しています。

    開発環境のPC上ではうまく読み出せているのですが。。。

    cvCaptureFromAVI()がエラーとなる要因は
    ・ファイルパスの指定ミス
    ・FFMPEGのコーデック変換ミス
    等のほかになにかあるのでしょうか。

    ほかに何か別の要因があるのでしたらご教授願います。
    よろしくお願い致します。

    [環境]
    HostPC:ubuntu-10.04
    Taget:freescale i.mx6 SABRE
    OpenCV:2.1.0
    ffmpeg:0.5.9
    AVIfile codec: Motion JPEG

  6. ymIwao より:

    はじめまして.
    Visual Studio2008にて,OpenCV 2.31とC++/CLIを用いたソフトウェアを開発中です.
    cv::mergeに関して解決できないエラーが起きて困っております.

    具体的には,用意した2つのcv::Mat(type CV_64FC1)をstd::vectorにpush_backし,他のMat(type CV_64FC2)にmergeする際に,Debug構成で実行しますとmergeしようとしている2つの配列のサイズかdepthが異なるという旨のエラー
    OpenCV Error: Assertion failed (mv[i].size == mv[0].size && mv[i].depth() == dep
    th) in unknown function, file ..\..\..\src\opencv\modules\core\src\convert.cpp,
    line 274
    が発生してしまいます.
    問題箇所のコードは下記のようになっております.

    Mat compMat = Mat(height,width,CV_64FC2);
    Mat realMat = Mat(height,width,CV_64FC1);
    Mat imgMat  = Mat(height,width,CV_64FC1);
    vector<Mat> mv;
    
    mv.push_back(realMat);
    mv.push_back(imgMat);
    merge(mv,compMat);
    

    リリース構成ですと,上記のような問題は生じず正常に動作しているようです.ちなみに,画像のtypeを試しにCV_8Uに変更してみましたが同様の問題が生じます.
    また,テスト用に作成したコンソールアプリケーション上ではデバッグ構成でも問題なく動作します.

    対処法や,原因など,アドバイスいただけると幸いです.

  7. kna0ki より:

    初めまして

    cv::Mat型の計算で、
    b = a * bと計算すると演算結果がおかしくなります。
    演算後に「ヒープが壊れていることが原因として考えられます。」と出力される場合もあります。

    cv::Matのサイズが144×144以上であると発生するようです。
    c = a * bでは正常動作します。

    上記演算の中身はgemmで実行されているようで、
    その関数を直接呼び出しても同じ現象が見られます。

    cv::gemm (a, b, 1, cv::Mat (), 1, b, 0);

    動作環境はOpenCV2.4.3を利用しており、
    下記の環境で動作確認しました。

    Win7 Pro x64 + VS2008 Pro + Win32で実行
    Win7 Pro x64 + VS2008 Pro + x64で実行
    Win7 Home Premium + VS2008 EE + Win32で実行
    Win7 Home Premium + VS2008 EE + x64で実行
    Win7 Home Premium + VS2012 EE + Win32で実行

    テストコードのビルド環境は以下にあります。
    http://sdrv.ms/YmoItY

    cv::Mat型でb = a * bという演算は誤っているでしょうか?
    是非ともご教授願います。

    /* gemm_test.cpp */
    
    #include	<opencv2/opencv.hpp>
    
    #if	defined(_DEBUG)
    #define	CV_SUFFIX_DBG_STR	"d"
    #else	/* defined(_DEBUG) */
    #define	CV_SUFFIX_DBG_STR	""
    #endif	/* defined(_DEBUG) */
    
    #define	CV_VERSION_STR	CVAUX_STR(CV_MAJOR_VERSION)	CVAUX_STR(CV_MINOR_VERSION)	CVAUX_STR(CV_SUBMINOR_VERSION)
    #pragma	comment	(lib, "opencv_core"	CV_VERSION_STR	CV_SUFFIX_DBG_STR	".lib")
    
    int main ()
    {
    	int start;
    	start = 128;
    	int end;
    	end = 256;
    
    	std::vector<int> sizes;
    	{
    		sizes.resize (end - start + 1);
    		int i;
    		for (i = 0; i < int (sizes.size ()); i++)
    		{
    			sizes[i] = start + i;
    		}
    	}
    	/* a = cv::Mat::eyeだと, szが(144, 144)から演算結果に異常 */
    	/* a = cv::Mat::onesだと, szが(146, 146)から演算結果に異常 */
    	{
    		int i;
    		for (i = 0; i < int (sizes.size ()); i++)
    		{
    			const int &sz = sizes[i];
    
    			cv::Size size;
    			size = cv::Size (sz, sz);
    			cv::Mat a;
    			a = cv::Mat::eye (size, cv::DataType<double>::type);
    			cv::Mat b;
    			b = cv::Mat::eye (size, cv::DataType<double>::type);
    #if	0
    			cv::gemm (a, b, 1, cv::Mat (), 1, b, 0);
    #else
    			b = a * b;
    #endif
    			cv::Mat diff;
    			/* bが単位行列だったので、aとbは一致するはず */
    			diff = a - b;
    			if ( cv::countNonZero (diff) )
    			{
    				fprintf (stdout, "%d, %s\n", sz, "false");
    			}
    			else
    			{
    				fprintf (stdout, "%d, %s\n", sz, "true");
    			}
    			a.release ();
    			b.release ();
    		}
    	}
    	return 0;
    }
    
    • yusuke より:

      kna0kiさん

      はじめまして。

      cv::Mat c = a * b;
      

      と、乗算を別の行列で受ければ想定どおりの結果になりますね。
      MatExprおよびgemmでインプレース処理がうまくいってないみたいです。

      • kna0ki より:

        お名前を間違いまして、申し訳ありません。
        yusukeさん、ご確認ありがとうございます。

    • kna0ki より:

      yossyさん、ご確認ありがとうございます。
      gemm関数のコードに不具合があると思われますので、ご報告しておきます。
      また、opencvの2.4.4のコードを修正し、演算結果が正しくなることを確認しました。

      改修したコードは以下URLにあります。
      http://sdrv.ms/WeFdaS

      以下は改修前後コードのdiffを取ったものです。

      <     AutoBuffer<uchar> buf;
      ---
      >     AutoBuffer<uchar> buf, _buf;
      1048,1049c1048,1049
      <         buf.allocate(d_size.width*d_size.height*CV_ELEM_SIZE(type));
      <         tmat = Mat(d_size.height, d_size.width, type, (uchar*)buf );
      ---
      >         _buf.allocate(d_size.width*d_size.height*CV_ELEM_SIZE(type));
      >         tmat = Mat(d_size.height, d_size.width, type, (uchar*)_buf );
      

      gemmの仕様は以下の通りです。
      http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#gemm

      gemmの第6引数dstに与えた変数と、第1引数src1もしくは第2引数src2に与えた変数が同じものである場合、dstへ代入するための演算結果を、上記改修前コードのAutoBuffer型の変数bufによって確保したメモリを用いて一時的に保持しようとします。
      しかし、buf変数は元々別の演算結果を格納するために使われる変数で、演算結果に異常がでるようです。
      改修後コードではAutoBuffer型の変数_bufを新設し、dstのためだけの一時バッファとして利用します。

      以上です。

  8. yossy より:

    初めまして
    現在openCVを用いてオプティカルフローを行っています
    今は以下のプログラムでUSBカメラから算出していますがこれをすでに撮った動画に対して行い、結果の動画を保存できるようにしたいです
    初歩的なこともわからず申し訳ありませんがよろしくお願いします

    int
    main (int argc, char **argv)
    {
    CvCapture *capture=0;//(add.1)
    char *status;
    int i, corner_count = 150;
    CvPoint2D32f *corners1, *corners2;
    CvTermCriteria criteria;
    IplImage *src_img1, *src_img2, *dst_img;
    IplImage *eig_img, *temp_img;
    IplImage *prev_pyramid, *curr_pyramid;
    IplImage *tmp;

    capture = cvCreateCameraCapture(0);
    dst_img=cvQueryFrame(capture);
    tmp = cvCreateImage(cvGetSize(dst_img), IPL_DEPTH_8U, 3);
    src_img1 = cvCreateImage(cvGetSize(dst_img), IPL_DEPTH_8U, 1);
    src_img2 = cvCreateImage(cvGetSize(dst_img), IPL_DEPTH_8U, 1);

    eig_img = cvCreateImage (cvGetSize (src_img1), IPL_DEPTH_32F, 1);
    temp_img = cvCreateImage (cvGetSize (src_img1), IPL_DEPTH_32F, 1);
    corners1 = (CvPoint2D32f *) cvAlloc (corner_count * sizeof (CvPoint2D32f));
    corners2 = (CvPoint2D32f *) cvAlloc (corner_count * sizeof (CvPoint2D32f));
    prev_pyramid = cvCreateImage (cvSize (src_img1->width + 8, src_img1->height / 3), IPL_DEPTH_8U, 1);
    curr_pyramid = cvCreateImage (cvSize (src_img1->width + 8, src_img1->height / 3), IPL_DEPTH_8U, 1);
    status = (char *) cvAlloc (corner_count);
    criteria = cvTermCriteria (CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 64, 0.01);
    cvNamedWindow (“Image”);

    while(1){
    dst_img=cvQueryFrame(capture);
    cvCopy(dst_img,tmp);
    cvCvtColor(dst_img,src_img1,CV_BGR2GRAY);

    cvGoodFeaturesToTrack (src_img1, eig_img, temp_img, corners1, &corner_count, 0.001, 5, NULL);
    printf(“found:%d\n”,corner_count);

    //cvFindCornerSubPix (src_img1, corners1, corner_count, cvSize (3, 3), cvSize (-1, -1), cvTermCriteria (CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.03));
    for (i = 0; i < corner_count; i++)
    cvCircle (dst_img, cvPointFrom32f (corners1[i]), 3, CV_RGB (0, 0, 255), 2);

    cvCalcOpticalFlowPyrLK (src_img1, src_img2, prev_pyramid, curr_pyramid, corners1, corners2, corner_count, cvSize (10, 10), 4, status, NULL, criteria, 0);

    for (i = 0; i =0)break;
    }

    cvDestroyWindow (“Image”);
    cvReleaseImage (&src_img1);
    cvReleaseImage (&src_img2);
    //cvReleaseImage (&dst_img);
    cvReleaseImage (&eig_img);
    cvReleaseImage (&temp_img);
    cvReleaseImage (&prev_pyramid);
    cvReleaseImage (&curr_pyramid);
    cvReleaseImage (&tmp);
    cvReleaseCapture(&capture);

    return 0;
    }

  9. altema より:

    初めまして.

    現在2.3を使用して画像認識,特に物体検出の研究をしているのですがopencv上で設計した自作の特徴量に対する検出器の制作は可能でしょうか? FeatureEvaluatorクラスを継承すれば独自の特徴量を実装可能との記述をweb上で見つけたのですがやり方がいまいちわかりません.

    是非ともご教授願います.

  10. Gishi より:

    OpenCV 2.4.3(2.4.2から)へのアップデートによりQtタスクバーアクション、「画像保存」「x30の値ラベル」に不具合が生じ、正しく動作しません。対処方法を教えて下さい。

  11. wakeke より:

    SVMの使用方法について教えてください。
    opencv2.0.0を使っています。9クラスに分離させたいのですが、CvSVM::train(const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), CvSVMParams params=CvSVMParams() )
    のresponsesに入れるべきデータはそのような構造にすればよいのでしょうか。
    また、多クラス識別の手法(one-vs-restなど)については、選択できるのでしょうか。

  12. Kenji Nonomura より:

    テンプレートマッチングについて教えてください。
    マッチング結果は cvMinMaxLoc()で最大と最小の値と、その座標を得ることはできますが、2番目や3番目に大きい値や座標を知ることは可能でしょうか?画像内によく似た領域が何箇所か散らばっているある場合を想定しています。

    • kerohiko より:

      OpenCVではマッチングの結果はスコア画像となります

      (1画素毎にその位置でのマッチングスコアが格納された画像が得られる)

      2番目・3番目のスコア位置は最高マッチングスコアのすぐ近傍にあることが多く
      ある程度のかたまりで処理をするのがよいと思います。

      想定されている使い方をしたい場合は、マッチングスコアの画像を閾値で2値化し、
      ラベリング処理や輪郭追跡で島を見つけるのがよいのではないでしょうか?

  13. tomib より:

    初めまして。
    iOS(Xcode)もしくはmacのターミナルを使って開発をしています。バージョンは2.4です。
    透視投影変換について質問があります。
    getPerspectiveTransformを使って変換行列を生成したあと、変換行列をテキスト等に保存し、
    別のプログラムで画像と変換行列を読み込み、cvWarpPerspectiveで透視投影変換したいと考えています。
    変換行列の入っている変数(pMatrix)はcv::Mat型なのですが、どこに変換行列自体が入っているのかわかりません。

    変換行列が3*3であることから、pMatrix.datastartを9回インクリメントし、値を取ってくればいいのかと思いましたが、どうもうまくいっていないようです。

    どうすれば、cv::Mat型の変数を外部に保存できるでしょうか?
    また、再度読み込むにはどうすればいいでしょうか?

  14. CUDAtester より:

    特定のOpenCVライブラリ(opencv_gpu240.libのみ)を使わず、
    ソースコードを自作プロジェクトに組み込みたいと思っていますが
    その方法が分かりません。
    ご教授いただけないでしょうか。お願い致します

  15. Kirin55 より:

    DLしたままではGPUライブラリが使えなかったのでリビルドしました。
    BUILD_EXAMPLEにチェックを入れるとエラーがでます。
    また、cv::getBuildInfomation()の結果が、
    Debugでは正しく出力しているようですがReleaseでは変です。
    どなたか原因がわかる方はいらっしゃいませんか?

    環境
    Windows7 Home Premium 32bit
    VS2008
    CUDA 4.1
    OpenCV 2.4.0

    Debugモード

    General configuration for OpenCV 2.4.0 =====================================

    Platform:
    Host: Windows 6.1 x86
    CMake: 2.8.6
    CMake generator: Visual Studio 9 2008
    CMake build tool: C:/PROGRA~1/MICROS~1.0/Common7/IDE/devenv.com
    MSVC: 1500

    C/C++:
    Built as dynamic libs?: YES
    C++ Compiler: cl
    C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
    E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
    bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi
    C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
    E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
    bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /R
    TC1
    C Compiler: cl
    C flags (Release): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPR
    ECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:
    SSE /arch:SSE2 /Oi /fp:fast /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi
    C flags (Debug): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPR
    ECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:
    SSE /arch:SSE2 /Oi /fp:fast /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
    Linker flags (Release): /STACK:10000000 /machine:X86 /INCREMENTAL:NO
    /debug
    Linker flags (Debug): /STACK:10000000 /machine:X86 /debug /INCREMEN
    TAL:YES

    OpenCV modules:
    To be built: calib3d contrib core features2d flann gpu highg
    ui imgproc legacy ml nonfree objdetect photo stitching ts video videostab
    Disabled by user: -
    Disabled by dependency: -
    Unavailable: androidcamera java python

    GUI:
    Win32 UI: YES
    OpenGL support: NO

    Media I/O:
    ZLib: build (ver 1.2.6)
    JPEG: build (ver 62)
    PNG: build (ver 1.5.9)
    TIFF: build (ver 42)
    JPEG 2000: build (ver 1.900.1)
    OpenEXR: NO
    OpenNI: NO
    OpenNI PrimeSensor Modules: NO
    XIMEA: NO

    Video I/O: DirectShow
    FFMPEG: YES (prebuilt binaries)
    codec: YES (ver 53.61.100)
    format: YES (ver 53.32.100)
    util: YES (ver 51.35.100)
    swscale: YES (ver 2.1.100)
    gentoo-style: YES

    Other third-party libraries:
    Use IPP: NO
    Use TBB: YES (ver 4.0 interface 6003)
    Use Cuda: YES (ver 4.1)
    Use Eigen: YES (ver 3.0.5)

    NVIDIA CUDA: (ver 4.1)
    Use CUFFT: YES
    Use CUBLAS: YES
    NVIDIA GPU arch: 11 12 13 20 21
    NVIDIA PTX archs: 11 12 13 20 21
    NVIDIA GPU features: 11 12 13 20 20 20

    Python:
    Interpreter: NO

    Documentation:
    Build Documentation: NO
    Sphinx: NO
    PdfLaTeX compiler: NO

    Tests and samples:
    Tests: YES
    Performance tests: YES
    Examples: YES

    Install path: C:/opencv/install

    cvconfig.h is in: C:/opencv
    —————————————————————–

    Releaseモード

    General configuration for OpenCV 2.4.0 =====================================

    Platform:

    General configuration for OpenCV 2.4.0 =====================================
    Host: Windows 6.1 x86

    CMake: 2.8.6
    Platform:
    CMake generator: Visual Studio 9 2008
    CMake build tool: C:/PROGRA~1/MICROS~1.0/Common7/IDE/devenv.com
    Host: Windows 6.1 x86
    MSVC: 1500

    CMake: 2.8.6
    C/C++:
    CMake generator: Visual Studio 9 2008
    Built as dynamic libs?: YES
    CMake build tool: C:/PROGRA~1/MICROS~1.0/Common7/IDE/devenv.com
    C++ Compiler: cl
    MSVC: 1500
    C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
    E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
    bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi

    C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
    E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
    bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /R
    TC1
    C/C++:
    C Compiler: cl
    Built as dynamic libs?: YES
    C flags (Release): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPR
    ECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:
    SSE /arch:SSE2 /Oi /fp:fast /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi
    C++ Compiler: cl
    C flags (Debug): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPR
    ECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:
    SSE /arch:SSE2 /Oi /fp:fast /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
    C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
    E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
    bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd4251 /MP4 /MD /O2 /Ob2 /D NDEBUG /Zi
    Linker flags (Release): /STACK:10000000 /machine:X86 /INCREMENTAL:NO
    /debug
    C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /EHs /GR /D _CRT_SECUR
    E_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigo
    bj /arch:SSE /arch:SSE2 /Oi /fp:fast /wd42