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 /wd4251 /MP4 /D_DEBUG /MDd /Zi /Ob0 /Od /R
    TC1
    Linker flags (Debug): /STACK:10000000 /machine:X86 /debug /INCREMEN
    TAL:YES
    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
    OpenCV modules:
    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
    To be built: calib3d contrib core features2d flann gpu highg
    ui imgproc legacy ml nonfree objdetect photo stitching ts video videostab
    Linker flags (Release): /STACK:10000000 /machine:X86 /INCREMENTAL:NO
    /debug
    Disabled by user: -
    Linker flags (Debug): /STACK:10000000 /machine:X86 /debug /INCREMEN
    TAL:YES
    Disabled by dependency: -

    Unavailable: androidcamera java python
    OpenCV modules:

    To be built: calib3d contrib core features2d flann gpu highg
    ui imgproc legacy ml nonfree objdetect photo stitching ts video videostab
    GUI:
    Disabled by user: -
    Win32 UI: YES
    Disabled by dependency: -
    OpenGL support: NO

    Unavailable: androidcamera java python
    Media I/O:

    GUI:
    ZLib: build (ver 1.2.6)
    Win32 UI: YES
    JPEG: build (ver 62)
    OpenGL support: NO
    PNG: build (ver 1.5.9)

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

    OpenEXR: NO
    Video I/O: DirectShow
    OpenNI: NO
    FFMPEG: YES (prebuilt binaries)
    OpenNI PrimeSensor Modules: NO
    codec: YES (ver 53.61.100)
    XIMEA: NO
    format: YES (ver 53.32.100)

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

    format: YES (ver 53.32.100)
    Other third-party libraries:
    util: YES (ver 51.35.100)
    Use IPP: NO
    swscale: YES (ver 2.1.100)
    Use TBB: YES (ver 4.0 interface 6003)
    gentoo-style: YES
    Use Cuda: YES (ver 4.1)

    Use Eigen: YES (ver 3.0.5)
    Other third-party libraries:

    NVIDIA CUDA: (ver 4.1)
    Use IPP: NO
    Use CUFFT: YES
    Use TBB: YES (ver 4.0 interface 6003)
    Use CUBLAS: YES
    Use Cuda: YES (ver 4.1)
    NVIDIA GPU arch: 11 12 13 20 21
    Use Eigen: YES (ver 3.0.5)
    NVIDIA PTX archs: 11 12 13 20 21

    NVIDIA GPU features: 11 12 13 20 20 20
    NVIDIA CUDA: (ver 4.1)

    Use CUFFT: YES
    Python:
    Use CUBLAS: YES
    Interpreter: NO
    NVIDIA GPU arch: 11 12 13 20 21

    NVIDIA PTX archs: 11 12 13 20 21
    Documentation:
    NVIDIA GPU features: 11 12 13 20 20 20
    Build Documentation: NO

    Sphinx: NO
    Python:
    PdfLaTeX compiler: NO
    Interpreter: NO

    Tests and samples:
    Documentation:
    Tests: YES
    Build Documentation: NO
    Performance tests: YES
    Sphinx: NO
    Examples: NO
    PdfLaTeX compiler: NO

    Install path: C:/opencv/install
    Tests and samples:

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

    Performance tests: YES
    Examples: NO

    Install path: C:/opencv/install

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

    • Kirin55 より:

      2.4.1でやってみましたが、結果は同じでした。
      error PRJ0019: ツールはエラーを返しました: “Building Custom Rule C:/opencv/modules/core/CMakeLists.txt” opencv_perf_gpu
      error PRJ0019: ツールはエラーを返しました: “Building Custom Rule C:/opencv/modules/core/CMakeLists.txt” opencv_test_gpu

      • Kirin55 より:

        リポジトリからソースを持ってきてビルドしたところエラーは発生せず、getBuildInfomation()も問題なさそうです。

  16. grandbleu より:

    はじめまして。これからOpenCVの利用を考えているのですが、
    OpenCVを用いて、傘をカメラの前で回したときの回転を検出することはできますでしょうか?
    どなたかご存じの方が居らっしゃれば、ご教授いただけましたら幸いです。
    何卒よろしくお願いいたします。

  17. chiled より:

    はじめまして。
    私は現在、OpenCV勉強中で、iPhoneアプリで使用する為に
    書籍等のサンプルを動かしていますが、armv6でしかビルドが通らない状態です。
    原因は、書籍サンプルのライブラリ(Universal Binary)に
    Armv7用のライブラリが入っていないためであることがわかりました。

    :Armv7でも使用できるようにライブラリを作成する方法をご教授いただけないでしょうか
    lipoの使用経験がなくどこにどのコードを入れて進めればよいのかもわかりません。

    :また、OpenCV2.3.1等では、iPhoneでもライブラリの作成を行わずとも
    xcodeで「libopencv_core.2.3.1.dylib」等を指定するだけでビルドできるのでしょうか?

    以上、2点、ご教授いただけましたら幸いです。
    何卒よろしくお願いいたします。

    • surbar より:

      はじめまして。
      chiledさんの目的を果たすためにはOpenCVをXcodeでビルドし,
      ライブラリを生成する必要があると思います。
      私はその方法でOpenCV2.3.0のライブラリを生成し、armv7で利用しています。
      (OpenCV2.3.1をうまくビルドできなかったので2.3.0を利用しています)

      目的達成までの手順は以下のような感じでしょう。

      1.OpenCVのソースをダウンロード(私は2.3.0を使っています)
      http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/

      2.CmakeでXcodeのプロジェクトを生成
      CMake,OpenCVで検索すればやり方は出てくると思います。
      3.生成したプロジェクトを開き、ライブラリをビルド

      ただビルドするとおそらくいろいろと怒られます。
      私の場合は、下のサイトを参考にしました。
      http://taichino.com/programming/2109

      この過程で大切だと思ったポイントを以下にまとめます。
      * ベースSDKをiOSにすること(デフォルトはMacになっている)
      * highguiやhaartrainingなどのいらないターゲットを消すこと
      * installスクリプトから削除したターゲットのインストール作業を取り除くこと
      * ビルド時に選択しているアーキテクチャ(iOS DeviceかiOS Simulator)毎にライブラリが作られること

      上4つは私の備忘録からのコピペなので分かりずらいと思いますが、
      どこかでつまずいたときはこれらのどれかが悪さをしているかもしれません。

      4.生成したライブラリをリンクさせて目的のソースをビルド。
      3の時点で
      iOSシミュレータ用のライブラリと、iPhone実機用のライブラリを作成するはずです。
      それぞれリンクを分けないとうまく作動しません。

      いろいろと説明が欠けているかもしれませんが、
      私はこんな感じで解決できました。

  18. masap より:

    初めまして.
    動画ファイルをオープンし、フレーム画像を1枚取得するプログラムを記述しています。
    ファイルのサイズが4GBを超えると、取得した画像が緑色になってしまいました。
    DLLには、PATHを通さず、実行ファイル直下においていますが、opencv_ffmpeg.dll(x64の場合は、opencv_ffmpeg_64.dll)を置いた場合は、緑色にならずに、正常に画像を取得できます。

    大きな動画ファイルを扱うときは、必ずopencv_ffmpeg.dllを使用しないといけないのでしょうか。
    どなたか似たような症状の経験がある方はいらっしゃいませんでしょうか?

    OS:Windows7 64bit
    OpenCVのバージョン:2.3.1
    開発環境:Visual C++ 2008
    動画ファイルは、非圧縮のAVIファイル

    以下にソースを記載いたします。

    #include “stdafx.h”
    #include
    int _tmain(int argc, _TCHAR* argv[])
    {
    cv::VideoCapture _Capture(“C:\\Temp\\test.avi”);
    cv::Mat frame;
    _Capture >> frame;
    cv::namedWindow(“image1″, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);
    cv::imshow(“image1″, frame);
    cv::waitKey(0);
    return 0;
    }

    どうが、宜しくお願いいたします.

  19. fndj より:

    初めまして.
    動画の隣接フレーム間でBRIEFデスクリプタのマッチングをする,という処理を繰り返し行うプログラムを作っているのですが,
    処理を繰り返すうちに落ちてしまいます.
    Debugモードのときは問題なく実行でき,Releaseモード時のみ問題が発生します.
    BruteForceMatcherでマッチングを実行するときに落ちているようなのですが,
    どなたか似たような症状の経験がある方はいらっしゃいませんでしょうか?

    OS:Windows7 64bit
    OpenCVのバージョン:2.3.1
    開発環境:Visual C++ 2010
    Intel C++ Compiler XE 12.1使用

    宜しくお願いいたします.

  20. ngt より:

    はじめまして、画像処理初心者です。
    OSはwindowsXPでOpenCV2.3です.
    さっそくcookbookにある「カメラ画像をキャプチャする」を実行してみたのですが,以下のように、拡張子が見つからない(指定されていない)というエラーがでました.
    「OpenCV Error: Unspecified error (could not find a writer for the specified extension) in unknown function, file \Users\vp\work\ocv\opencv\modules\highgui\src\loadsave.cpp, line 276」
    ソースコードをいかに示します.imwriteに何か拡張子を指定する引数を加えればいいのでしょうか?(調べては見ましたがよくわかりませんでした)お願いします。

    //
    #include “stdafx.h”
    #include
    #include
    #include
    #include

    #ifdef _DEBUG
    //Debugモードの場合
    #pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_core230.lib”)
    #pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_imgproc230.lib”)
    #pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_highgui230.lib”)
    #else
    //Releaseモードの場合
    #pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_core230d.lib”)
    #pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_imgproc230d.lib”)
    #pragma comment(lib,”C:\\OpenCV2.3\\build\\x86\\vc10\\lib\\opencv_highgui230d.lib”)
    #endif

    int
    main(int argc, char *argv[])
    {
    cv::VideoCapture cap(0);
    // 様々な設定…
    cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
    // カメラがオープンできたかの確認
    if(!cap.isOpened()) return -1;

    cv::namedWindow(“Capture”, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);
    while(1) {
    cv::Mat frame;
    cap >> frame; // キャプチャ
    // 様々な処理
    // …
    cv::imshow(“Capture”, frame); // 表示
    if(cv::waitKey(30) >= 0)
    {
    cv::imwrite(“cap.jpg”, frame);
    break;
    }
    }
    }

    • ngt より:

      補足:すいません何故かインクルードの部位が抜けてます。追記させてください。

      #include “stdafx.h”
      #include
      #include
      #include
      #include

      です。

      • ngt より:

        なんどinclude部を書き込んでも何故か表示しません。よくわかりませんが、プログラムのインクルードは問題ないとおもいます

  21. yukichi より:

    私はOpenCV(2.1と2.3)のサンプルプログラムのstereo_match.cppというプログラムを使っていて、視差画像と3次元座標値群を出力させているのですが、どうもその2つの結果がかみ合わない気がします。視差画像に映ってる部分(例えば箱など)が座標値群に出てこないんです。どのようにすれば良いのかアドバイス頂けたら幸いです。また、この処理をやったことのある方がいましたらどのようにすればいいのか教えていただけないでしょうか?よろしくお願いします。

  22. iqverylow より:

    CODE BOOKの中に Bilateral Filter部分のコードはmedian filterのコードと同じのような気がします.

  23. クロスカントリー より:

    初めまして
    OpenCV 2.3でのテンプレートマッチングについての質問です.

    OpenCVで探索範囲を限定してテンプレートマッチングを行うためにはどのような方法があるのでしょうか?
    やはり,元の画像から探索範囲だけを切り抜いたのちにマッチングしなければならないのでしょうか?
    cv::goodFeaturesToTrackのようにROIで範囲を限定してやることはできないでしょうか?

    どうか知恵をお貸しください.
    宜しくお願い致します.

  24. cvdummy より:

    OpenCV2.0から2.3.1へ移行し、2.0で書いた顔認識プログラムがほぼそのままで2.3.1に流用できたのですが、CascadeClassifier::detectMultiScaleのアルゴリズム変更のせいか、同じ引数を渡して実行してみると、対象画像に顔がないときだけ非常に重くなるようになってしまいました。 2.0のときにこのような挙動はありませんでした。 ちなみに2.0はOpenMP対応版を使っています。
    このような挙動の回避手段をご存知の方がおられましたら、お教え願えれば幸いです。

  25. myuki より:

    はじめまして。
    バグと言うか現状の仕様だと思いますが、詰まったことがあったので報告します。

    C++ インターフェイスで subtract 関数(や他の類似の関数でも?)では配列などと Scalar を引数に取れるようになりましたが、Scalar_ を渡すと型が不一致になる assert が出ます。
    開発版では解消されるのでしょうか?

    例:
    //Scalar_ ave;
    Scalar ave;
    std::vector data;
    std::vector sub;
    (略)
    ave = cv::mean(data);
    cv::subtract(data, ave, sub); // ave が Scalar_ だとエラー

    with OpenCV 2.3.1, Visual C++ 2010 Express, Windows XP

  26. sugiyama より:

    saturate_castについて質問です。

    cv::saturate_cast(12.5)を実行した場合、戻り値は13を期待していたのですが、
    12に丸められてしまいます。

    リファレンスには、
    >パラメータが浮動小数点数であり,変換後の型が整数(8ビット,16ビット,32ビット)である場合,
    >この浮動小数点数は,まず最も近い整数値に丸められてから,必要ならば切り詰められます
    >(変換後の型が,8ビットあるいは16ビット整数の場合).
    とあるので、使い方を間違ているわけではないと思っているのですが。。。
    同じような問題に当たったことがある型はいるでしょうか?

    使用しているOpenCV環境は以下となります。
    OpenCV2.3(CMakeとVisual Studio 2005でビルド)
    Visual Studio2005
    Windows7

    • fukushima より:

      単純に飽和してるかどうかを判断した後にキャストしている処理かとおもうので12に良いのでは?と.四捨五入するにはcvRoundをつかうといいかと思います.

    • fukushima より:

      上記訂正です.私の環境でテストしてみたところ四捨五入ではなく0.5までは切り捨て,それ以上で切り上げになっているようです.(0.5は0,0.51は1)

      • sugiyama より:

        返信ありがとうございます。

        saturate_castのソースを追ってみたのですが、内部でcvRoundをコールしており、
        cvRoundの動作は、私の環境だとアセンブリ命令 fistpで小数点以下を丸めているようです。(コンパイル環境に応じて変わるようです。)
        この命令は、0.5を偶数方向に四捨五入しているするようです。

  27. t_todoroki より:

    私の勘違いであれば申し訳ないのですが、
    下記アドレス
    http://opencv.jp/sample/object_detection.html
    「物体検出」のサンプルコードにおいて、

    CvHaarClassifierCascade *cascade

    がメモリ解放されておらず、
    メモリリークを起こしているように見えます。

    プログラムの末尾に

    cvReleaseHaarClassifierCascade(&cascade);

    が必要ではないでしょうか?

    ご確認をよろしくお願いします。

  28. 服部 國彦 より:

    初めまして
    OpenCV.2.2を VC++ 2010 Expressで使おうとしています。

    「>C:\OpenCV2.2\include\opencv2/core/types_c.h(284): error C3862: ‘cvRound’: /clr:pure または /clr:safe を伴うアンマネージ関数をコンパイルできません1>
    インラインのネイティブ アセンブリはマネージ コードでサポートされていません」

    というメッセージが出てコンパイルできません。
    どうしたらいいかお教え頂けたら幸いです。

    • ふくだ より:

      こんにちは。
      プロジェクトのプロパティ->構成プロパティ->全般->共通言語欄タイプサポート->共通言語ランタイプサポート(/clr)に変更してみたら如何でしょう。
      自分も、ここが“純粋MSIL共通言語ランタイプサポート(/clr:pure)”だと、同様なエラーがでました。
      お試しください。

  29. AknEP より:

    些細ではありますが、イントロダクションのサンプルコードに誤りを見つけました。
    contrast_gain と定義されている変数が、後方でconstrast_gainとして呼び出されています。(後の方のsが余計です)。

    http://opencv.jp/opencv-2svn/cpp/introduction.html

    報告のみ、失礼します。

    • idojun より:

      ご指摘,有難うございます.あとで修正しておきます.

  30. mattsun より:

    はじめまして。
    2週間ほど前からOpenCVを勉強し始めたものですが、今カメラから取り入れた映像をAVIファイルに書き込むというプログラムを作って(『詳解OpenCV』の例題2-10を用いています)いるのですが、カメラをどのように指定したらよいのかがわからず、手詰まり状態なのですがどのようにしていしたらよいのか教えていただけますでしょうか?

    //ビデオを対数極座標に変換する
    //argv[1]:入力ビデオファイル
    //argv[2]:新しい出力ファイル名
    #include"stdafx.h"
    #include"cv.h"
    #include"highgui.h"
    
    int main(int argc,char* argv[])
    {
    	CvCapture* capture=0;
    	capture=cvCreateFileCapture(argv[1]);
    	if(!capture)
    	{
    		return -1;
    	}
    	IplImage *bgr_frame=cvQueryFrame(capture);
    	double fps=cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
    	CvSize size=cvSize((int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH),(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT));
    	CvVideoWriter *writer=cvCreateVideoWriter(argv[2],CV_FOURCC('M','J','P','G'),fps,size);
    	IplImage* logpolar_frame=cvCreateImage(size,IPL_DEPTH_8U,3);
    
    	while((bgr_frame=cvQueryFrame(capture)) !=NULL)
    	{
    		cvLogPolar(bgr_frame,logpolar_frame,cvPoint2D32f(bgr_frame->width/2,bgr_frame->height/2),40,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS);
    		cvWriteFrame(writer,logpolar_frame);
    	}
    	cvReleaseVideoWriter(&writer);
    	cvReleaseImage(&logpolar_frame);
    	cvReleaseCapture(&capture);
    	return(0);
    }
    
  31. iino より:

    UVCカメラでキャプチャを行っています。
    ubuntu+OpenCV2.3.0ですが、2台のカメラをキャプチャ出来ません。
    (no space left on deviceというエラー)
    V4Lの問題のようですが、解決策はPCIのUSB拡張ボードを使えという程度しかありませんでした。
    仕方ないので、片方のカメラを閉じてもう片方のカメラを開いてという繰り返しを行ってみた所
    メモリリークしているようです。
    2個だからかなあと思って1個だけのカメラのオープンクローズを繰り返して見ましたが、現象は
    同じでした。
    どんどんメモリを食いつぶしていって最後にはエラーになります。
    こういう事をする例がないのですが、私が何か処理を忘れているのでしょうか?
    (それとも検証されていないバグなのか・・・)
    何か情報をお持ちの方、ご教授頂けると助かります。
    (他のバージョンでは起きないとか・・・)

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <opencv/cv.h>
    #include <opencv/highgui.h>
    #include <ctype.h>
    
    int main( int argc, char *argv[] ) {
      CvCapture *capture = 0 ;
      IplImage *frame = 0 ;
      int c ;
    
        cvNamedWindow( "Capture", CV_WINDOW_AUTOSIZE ) ;
        while(1) {
          capture = cvCaptureFromCAM( 0 ) ;
          frame = cvQueryFrame(capture) ;
          cvShowImage("Capture", frame ) ;
          cvReleaseCapture(&capture) ;
          c = cvWaitKey(30) & 0xff;
          if ( c == 'q' ) break ;
        }
        cvDestroyWindow("Capture") ;
        return 0 ;
    }
    
  32. kenji Nonomura より:

    市販のUSBカメラとそのトリガ入力を利用したいので、付属のSDKのサンプルで取込んだ画像をOpenCVへ変換したのですが、画像が1/9の大きさに表示されてしまいます。(横方向、縦方向 ともに1/3の大きさで 一番上側3画面のみ表示となります。)
    相手側はLPBYTE PBuffで、OpenCV側はchar *なので、下のようなプログラムにしました。
    何故、画像が小さくなるのか アドバイス頂けないでしょうか、よろしくお願いします。
    img = cvCreateImage(cvSize(640, 480), 8, 3);
    printf(“img->widthStep = %d\n”,img->widthStep);
    int y, x;
    for (y = 0; y height; y++) {
     for (x = 0; x width; x++) {
    /* 画素値を直接 copy */
       img->imageData[img->widthStep*y+x*3]
    =pBuff[img->widthStep*y+x*3];
       img->imageData[img->widthStep*y+x*3+1]
    = pBuff[img->widthStep*y+x*3+1];
    img->imageData[img->widthStep*y+x*3+2]
    = pBuff[img->widthStep*y+x*3+2];
    }
    }
    cvNamedWindow (“Image”, CV_WINDOW_AUTOSIZE);
    cvShowImage (“Image”, img);

    • suenaga より:

      USBカメラ画像の解像度や画像フォーマットが不明なので返答が難しいですが、USBカメラ画像がグレースケールなどBGR以外のフォーマットで取り込まれているということはないでしょうか?

      余談ですが、forループの条件に”<"が抜けてるのは転記ミスと信じるとして、画素のコピー部分は以下のように、OpenCVのIplImageではwidthStepを使って、pBuffにはwidthを使ったほうが良いと思います。(今回の解像度では問題ないと思いますが)

         img->imageData[img->widthStep*y+x*3]
      =pBuff[img->width*y+x*3];
         img->imageData[img->widthStep*y+x*3+1]
      = pBuff[img->width*y+x*3+1];
      img->imageData[img->widthStep*y+x*3+2]
      = pBuff[img->width*y+x*3+2];
      
  33. shinya より:

    サンプルコードの顔の検出 cvHaarDetectObjectsにてリンクエラーが発生。
    ディレクトリー、追加の依存ファイルにlibをネットを頼りに追加しましたが
    改善されません。環境は、WIN7とVC2010と2.20です。cvHaarDetectObjects
    の正しいヘッダファイルは、なんでしょうか?教示頂けるとたすかります。
    現在の記述
    #include
    #include

    error LNK2019: 未解決の外部シンボル _cvHaarDetectObjects が関数 _main で参照されました。

  34. matsumoto より:

    はじめまして、
    cvCreateImage関数を呼び出すと、なぜか別の配列が壊れます。
    環境はWin7(32bit)+VS2010+OpenCV-2.2.0-win32-vs2010.exeです。
    具体的には(定義部)

    #include <opencv2\core\core_c.h>
    #include <opencv2\highgui\highgui_c.h>
    struct VOXELDATA {
    	unsigned long width;
    	unsigned long height;
    	unsigned long depth;
    	unsigned short planes;
    	unsigned short bps;
    	unsigned short**** data; //これが壊れる
    } ;
    VOXELDATA* voxeldata;
    IplImage*	img;
    

    で、この段階ではvoxeldata->data[0][0][0][0]は正常に読めるのですが、次に
    img = cvCreateImage(cvSize(voxeldata->width, voxeldata->height), IPL_DEPTH_8U, voxeldata->planes);
    を呼ぶとvoxeldata->data[0]が0xccccccccに化け、volxeldata->[0][0][0][0]を読むとエラーになります。

    • idojun より:

      はじめまして.
      cvCreateImage()の呼び出しだけで,関係ないメモリ領域が破壊されることはないはずなので,おそらく原因は別にあると思うのですが….問題を再現(実行)できる最小限のコードを見せていただければ検証できるかもしれません.

      • まつもと より:

        単なるmallocでも配列が破壊されるのを確認しました。
        opencvの問題ではなさそうです。
        お騒がせいたしましたm(_ _)m

  35. yukichi より:

    はじめまして.
    私はOpenCV-2.1のサンプルプログラムのstereo_match.cppというプログラムを使ってるんですが,出力であるdepth画像はきれいに出るのですが3次元座標値がどうしてもうまく表示できません.obj形式で出力してjavaviewという3Dビューアを使って見てるんですが,いつも放射線状になってしまってdepth画像と対応してる点が見当たらないんです.

    自分でもいろいろ調べたのですが,何が良くて何が悪いのかよく分からないんでアドバイス頂けると幸いです.よろしくお願いします.

    • fukushima より:

      ソースを見てみましたが,出力はデプスではなく視差画像と各画素の3次元点(x,y,z)のプロットですね.saveXYZ()での出力を使っても駄目でしょうか?

      • yukichi より:

        返信ありがとうございます.私もソースをもう一度見てみたのですが,saveXYZはソースの中にあって使われてると思うんです.うーん…そもそもsaveXYZって3次元座標値を保存するものなんですよね??
        ほんと学習不足の意見で申し訳ないです…

        • fukushima より:

          放射線状となっていましたので,視差と奥行きが違っていたのかなとの推測で言っていました.saveXYZはreprojectImageTo3D関数を使って視差をxyzの3次元空間に投影する関数です.
          javaviewの入力フォーマットを知らないためこれ以上何とも言えませんが参考までに.

          • yukichi より:

            ほんといろいろありがとうございます.
            この3次元座標値さえきちんとした形で出力できれば,物体の形状を構成することができると思うんですけども…
            私がやろうとしている事は多方向から撮影し,視差画像と3次元座標値を使って様々な方向から撮影した画像をつなぎ合わせて1つの物体の形状をつくろうとしています.いわゆる形状計測です.他にこれをしたらいいよとかこれを使えばいいんじゃない的なアドバイスをもらえるとありがたいです.自分でもいろいろしてみるんですが出来が悪くて…頼りっぱなしですみません.

        • fukushima より:

          まずは,1枚のxyzがモデル化できるようになったら(ここのサンプルであるPoint Cloud renderingのサンプルではできているはずです.),次は複数のデプスマップや3次元座標を,xyzの座用系の統一やモデルの位置合わせ(ICPアルゴリズムなどを使う)を行えばできるはずです.ROSのPoint Cloud Libraryや東大の池内研究室の論文などを参考にするといいと思います.

          • yukichi より:

            いろんな情報ありがとうございます.
            早速,東大の池内研究室やPCLなんかも見ました.とても役に立ちそうです.
            ところでこのサイトにあるpoint cloud renderingってすごく私のやっていることに近いんですが,具体的に何をしているものなのですか?左右画像からマッチングをして,そのデプス画像に原画像をくっつけて立体的に表示してるんですよね?

  36. mmm より:

    openCVとopenGLを使用して、ARのようなカメラ映像の上に3Dモデルを描画したいのですが、ウインドウにカメラの映像が表示されなくて困っています。何か良い方法があれば教えて下さると助かります。よろしくお願いします。
    作業環境は以下の通りです。
    opencv1.1pre1、visualC++2008、wiandowsXP、glut3.7.6

    • idojun より:

      OpenCVで作成したウィンドウ内に,OpenCVでキャプチャしたカメラ画像が表示できない,という意味でしょうか?それでしたら,Web上に多くのサンプルがあると思うのですが,どの例で動かなかったのか示していただければ,何かアドバイスできることがあるかもしれません.

      • mmm より:

        openGLで作成したウィンドウに2Dの四角形を作り、テクスチャとしてカメラでキャプチャした画像を貼り付けるという風にして表示させようとしているのですが、うまくいきませんでした。四角形自体は表示されているので、テクスチャに変換するところに何か問題があるのではと私は思っています。

        • idojun より:

          OpenCV1.1をご利用とのことで,普段はIplImage構造体を使われていると思いますので,以下のimageをIplImageとして,

          glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image->width, image->height,0, GL_BGR, GL_UNSIGNED_BYTE, image->imageData);
          

          というように指定すればよろしいかと思います.

          • mmm より:

            すみません、試してみたのですがまだうまくいかないです。テクスチャが問題ないとすると、描画や表示の部分に問題があるのでしょうか?描画にはglEnable()を使っていて、表示にはglutSwapBuffers()を使っています。

          • idojun より:

            このような感じでいかがでしょうか.

            void display()
            {
              IplImage *image = cvLoadImage("../../image/lenna.png", 1); // load image
              GLuint text;
              glGenTextures(1, &text);
            
              glBindTexture( GL_TEXTURE_2D, text );
              glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
              glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
            
              glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
              glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image->width, image->height,0, GL_BGR, GL_UNSIGNED_BYTE, image->imageData);
            
              glEnable(GL_TEXTURE_2D);
              glBegin(GL_QUADS);
              glTexCoord2d(0.0, 1.0);   glVertex2d(-0.8,0.9);
              glTexCoord2d(0.0, 0.0);   glVertex2d(-0.9,-0.9);
              glTexCoord2d(1.0, 0.0);   glVertex2d(0.9,-0.8);
              glTexCoord2d(1.0, 1.0);   glVertex2d(0.7,0.7);
              glEnd();
              glDisable(GL_TEXTURE_2D);
            
              glFlush();
            }
            
            int main(int argc,char *argv[])
            {
              glutInit(&argc,argv);
              glutCreateWindow("test");
              glutDisplayFunc(display);
            
              glClearColor(0.,0.,0.,0.);
              glutMainLoop();
            
              return 0;
            }
            
  37. umr より:

    はじめまして、VideoWriterについて質問があります。
    使用環境は、
    Opencv2.2.0(コンパイル済のexeでインストール)/VisualStudio2010(C++)/WindowsXpです。
    ReleaseモードでVideoWriterを初期化する際に、CV_FOURCCでコーデックを指定すると、malloc.cの89行目でエラーが生じて実行できません。Debugモードでは問題なく録画が可能です。
    その後、自分でコンパイルしたdll・libファイルを試しましたが、状況変わらずでした。
    2.1.0を使っていたときは、コンパイル済みのexeをインストールしたときは、Release/DebugモードともにCV_FOURCCを使って録画可能でしたが、自分でコンパイルしたdll・libファイルを使うと何故かCV_FOURCCを使うと録画できなくなってしまいました。エラーは前述と同じです。
    原因・改善策について何か御存知でしたら、教えてください。

  38. kenji Nonomura より:

    画像のキャプチャについて質問します。
    トリガー端子付のUSBカメラを使い、トリガのタイミングで画像をキャプチャすることはできるかアドバイスをお願いします。下のようなプログラムでは常時、画像を取込めることは確認できています。
    よろしくお願いします。
    while (1) {
     src_img = cvQueryFrame (capture); // カメラから画像をキャプチャする
     cvShowImage (“生画像:Capture”, src_img);

    • idojun より:

      はじめまして.
      私はそのカメラ環境を持っておりませんので,お答えするのが難しいのですが,そのような高度なカメラには通常,専用のSDKが付属しているのではないでしょうか.もしそうでしたら,それでキャプチャを行い,取得した画像をOpenCVで利用できる形式に変換するというのが最も確実な気がします.
      OpenCV自体にはトリガを送信する機能はありませんし(そもそも,インタフェースも不明なわけですが),トリガが余所から送られたか否かを知る方法もないと思います.
      参考になれば幸いです.

  39. kita より:

    初めまして。
    私はこれからGPGPUを使おうと考えています。
    OpenCVも2.2でGPUを使うことが可能になりましたが、このモジュールを使うのはまだ時期尚早でしょうか?

    環境は整えましたが、
    gpu::threshold()関数でマニュアルと違う数の引数を求められて戸惑っています。

    実際にOpenCV2.2のGPUモジュールを使っておられる方はおられるのでしょうか?
    漠然とした内容で申し訳ないですが、アドバイス等有りましたらお願いします。

    • idojun より:

      はじめまして.
      私はGPGPUの機能を利用できる環境を持っていないので,実際のところGPUモジュールの完成度はよく分からないです.ご指摘のgpu::thresholdを見てみましたが,これはマニュアルのミスだと思います.
      実際には,

       double threshold(const GpuMat& src, GpuMat& dst, double thresh);
      

      と,定義されているようです.
      gpuモジュールの開発にはNvidiaのエンジニアも関わっているということなので,これから完成度も上がっていくと思われますが,どの辺で手を出すかは利用者次第だと思います.日本語圏内では,まだまだ利用者は少ないようですね.

  40. tetuya より:

    Opencv2.1.0のインストールについて質問があります。

    SourceForgeからダウンロードしてきたものに入っている、Opencv2.1.0/src/highguiの中のC/C++ファイル(cvcapファイル)をすべてインストールしたいのですが、どうすればよいでしょうか。

    idojun様のOpencv2.0.0インストール方法で試してみましたが、インストールはされませんでした。

    CMakeのオプションをいじるものでしょうか。

    アドバイスよろしくお願いします。

    • idojun より:

      はじめまして.環境(windows,linux,mac)は何をお使いでしょうか?windowsだとすると,インストールはインストーラをご利用でしょうか?それとも,ソースからのコンパイルでしょうか?
      また,src/highgui/cvcap*.cppをすべてインストールしたいとのことですが,これらはソースファイルであり,通常はインストール不要だと思われます.目的などをお教えいただければ,アドバイスできるかもしれません.

  41. shimazu より:

    2.2系の API を使っているのですが、バグのように思える問題を見付けました。
    GenericDescriptorMatcher::clear() の後に再度 add() しようとすると異常終了してしまいます。
    リファレンスによると、
    http://opencv.jp/opencv-2svn/cpp/features2d_common_interfaces_of_generic_descriptor_matchers.html#cv-genericdescriptormatcher-clear

    訓練コレクション(画像とキーポイント)をクリアします.

    とあるのですが、ソースを見ると、どうやらキー・ポイントしかクリアしていないようです。
    https://code.ros.org/trac/opencv/browser/trunk/opencv/modules/features2d/src/matchers.cpp#L751

    void GenericDescriptorMatcher::clear()
    {
    trainPointCollection.clear();
    }

    このため、続けて add() しようとすると、画像とキー・ポイントの対応が取れ無くなっている様に思えます。
    本家に報告すべきでしょうか?

    • idojun より:

      今,環境がないので簡単な確認しかできませんが,確かに仰る通りの問題だと思います
      (VectorDescriptorMatcherなどでも同様の問題が起きそうな気がします).

      Matcherを新たに再作成することを除けば,有効な回避策もなさそうなので,バグトラッカーに登録されると良いと思います.

      • shimazu より:

        登録してみます。
        ちなみに、検証コードを作ってみました。

        // std C++
        #include	<stdexcept>
        #include	<vector>
        
        // OCV
        #include	<opencv2/core/core.hpp>
        #include	<opencv2/highgui/highgui.hpp>
        #include	<opencv2/features2d/features2d.hpp>
        
        int main(int argc, char* argv[])
        {
        	if(argc < 2)
        		throw std::domain_error("too few arguments");
        
        	std::vector<cv::Mat> image;
        	for(int i = 1; i < argc; i++)
        		image.push_back(cv::imread(argv[i], 0));
        
        #define		OCTAVE			4
        #define		OCTAVE_LAYER	2
        	cv::Ptr<cv::FeatureDetector> fd(new cv::SurfFeatureDetector(500, OCTAVE, OCTAVE_LAYER));
        	std::vector<std::vector<cv::KeyPoint>> kp;
        	fd->detect(image, kp);
        
        	cv::Ptr<cv::GenericDescriptorMatcher> dm(new cv::VectorDescriptorMatcher(
        		new cv::SurfDescriptorExtractor(OCTAVE, OCTAVE_LAYER),
        		new cv::BruteForceMatcher<cv::L2<float>>));
        	dm->add(image, kp);
        
        #ifndef	HACK_GenericDescriptorMatcher_clear
        	dm->clear();
        #else	//!HACK_GenericDescriptorMatcher_clear
        	dm = new cv::VectorDescriptorMatcher(
        		new cv::SurfDescriptorExtractor(OCTAVE, OCTAVE_LAYER),
        		new cv::BruteForceMatcher<cv::L2<float>>);
        #endif	//!HACK_GenericDescriptorMatcher_clear
        
        	dm->add(image, kp);	//!!
        
        	return 0;
        }
        
  42. IloveOpencv より:

    OpenCVのライセンスはBSDライセンス(相当?)で、OpenCVのhighguiのライブラリはlibavcodecに依存していると思います。動画ファイルを扱うプログラムを作ろうとするとhighguiを使うことになると思いますが、OpenCVのライセンスにしたがうだけでよいのでしょうか?それともOpenCVのライセンス+libavcodecのライセンス(LGPL)の両方にしたがうことになるんでしょうか?
    色々調べましたが、ライセンスの文書が難しくよくわかりません。
    よろしくお願い致します。

    • idojun より:

      個人的な見解ですが,配布時にリンクされるライブラリ全てのライセンスに従っておけば問題ないのではないでしょうか.ソースコードに手を加えず,動的にリンクする場合,両方のライセンスに従うことは可能だと思います.

      • ILoveOpenCV より:

        早速の回答ありがとうございます。
        その場合、LGPLとBSDライセンスは一部矛盾があるとのことですが、自分で書いたコードはどの様なライセンスにしておくのがよいでしょうか?ご意見よろしくお願い致します。

        • idojun より:

          ソースコードに手を加えず,ライブラリを動的にリンクする場合,それらのライセンスに従うのに矛盾は生じないと思うのですが,どのような矛盾があるのかを教えて頂けますでしょうか.
          自分も専門家ではないので,思い違いがあるのかもしれません.

          • ILoveOpenCV より:

            早速の返事ありがとうございます。
            矛盾があると思っていたのは以下のサイトの記述からです。
            よろしくお願い致します。

            http://www.gnu.org/licenses/gpl-faq.ja.html

            該当部分を以下にコピーします。

            どうしてオリジナルのBSDライセンスはGPLと矛盾するのですか?
            オリジナルのBSDライセンスはGPLには無い特定の要件を課すからです。その要件とは、プログラムの宣伝に関するものです。GPLでは:

            You may not impose any further restrictions on the recipients’ exercise
            of the rights granted herein.

            (訳: あなたは受領者に、ここで認められた権利の行使に関して更なる制限を課し
            てはならない。)

            オリジナルBSDの宣伝条項はまさしくそのような「更なる制限」を提供しており、よってGPLと矛盾します。

            改訂BSDライセンスには宣伝条項がありませんから、問題ありません。

          • idojun より:

            リンク先を拝見しました.まず,この記述はGPLについて書かれているようです.GPLとLGPLは,(特に,それをライブラリとして利用する場合)異なります.
            LGPLを動的にリンクした実行ファイルが「派生物」にあたるかどうかは諸説あるようですので断定はできませんが,個人的には
            http://www.opensource.jp/lesser/lgpl.ja.html にあるように,

            『ライブラリ』のいかなる部分の派生物も含まないが、それとコンパイルされ るかリンクされることにより『ライブラリ』と共に動作するようデザインされ ているプログラムは、「『ライブラリ』を利用する著作物」と呼ばれる。その ような著作物は、単体では『ライブラリ』の派生著作物ではないので、この契 約書の範囲外に置かれる。

            という考えです.
            また,ライセンスを読んでいただければわかると思いますが,OpenCVは広告条項が除かれた所謂修正BSDです.現在では旧BSDはあまり利用されないので,BSDといった場合は修正BSDであることが多数だと思います.
            参考になれば幸いです.

  43. tack より:

    二値化された画像から抽出された輪郭の座標データをxmlファイルに書き込む場合、cvOpenFileStorageやcvStartWriteStructを使っています。OpenCVのSAMPLE-CODEにあるものです。しかしこれは書き込む各輪郭の順番を作業者が選べません。
    そこでわたしは複数の輪郭を一つ一つマウスで選択し、選択した順番どおりに輪郭の座標点を書き込む方法を探しています。
    流れは、 選択→Enterキー→書き込み→選択→Enterキー→選択→Enterキー…といった感じです。
    現状は、選択した輪郭を書き込むことはできますが、毎回データを追加したいのですがそれができず毎回上書きしてしまい、結局ファイル内には一つの輪郭の座標データしか残りません。

    ファイルを読み込んでも上書きせず追加するような関数はないでしょうか。または参考となるURLがありましたら教えてください。今大変困っています。アドバイスお願いします。

    • idojun より:

      私が状況をよく理解していないかもしれませんが,「途中でファイルストレージを閉じず(cvReleaseFileStorage)に,最後までデータを書いてから閉じる」,という方法では,何か不都合がありますでしょうか.
      そのような方法が使えない場合,輪郭を指定した順番通りに,別の構造体に保存して,最後にまとめて書き込む,という方法になるかと思います.

  44. ykuri より:

    静止画キャプチャの解像度の変更について質問があります.

    現在,

    opencv1.0.0
    Linux Debian 2.6.26-2-686

    を使用しています。

    opencv1.0.0では,CvCaptureSetPropertyの解像度の変更が未実装だということがわかりました.

    しかし,ウインドウズでは以下のurlのように
    http://tech.groups.yahoo.com/group/OpenCV/message/56022
    cap.cppが存在して,書き換えれば対応するみたいですが,Linux版にも同じようなファイルが存在するのでしょうか?

    もしないようでしたら,opencv2.xに変更しようと考えています.
    その場合,cap_vfw.cppは確認できたのですが,Linuxではどのファイルにあたるのでしょうか?

    素人で申し訳ありませんが,本当に困っています・・・.

    どうかアドバイスよろしくお願いします.

    • idojun より:

      opencv-1.0.0 において,Windows版の cap_vfw.cpp に対応するファイルは cap_v4l.cpp です.
      これを書き換えたことによって所望の動作になるかどうかは確認していませんが,一応参考までに.

  45. 野々村謙二 より:

    輪郭の凹状の欠損についてアドバイス有難う御座いました。解決しました。

  46. 野々村謙二 より:

    輪郭の凹状の欠損について質問します。
    ①画像を2値化のあと、
    ②輪郭の検出       cvFindContours()を行い、
    ③輪郭の凸包を計算して  hull = cvConvexHull2( )、
    ④輪郭が凸かどうかチェックしてcvCheckContourConvexity( contours )、
    ⑤凹状欠損を計算する
            result = (CvSeq *)cvConvexityDefects(contours,hull,storage2); 
    ⑥result->totalの要素数分を直接アクセスする 
      CvPoint* p = (CvPoint*)cvGetSeqElem(result,i);
    ⑦次にp->x,p->yの値をprint文にて表示する
      printf(“(%d,%d)\n”, p->x,p->y); 

      p->x, p->yの値は 上の③凸のx,y値とは全く違う値になりました。

    要素のp->x,p->yは何か違う値を参照するのでしょうか?

    マニュアルには
    cvConvexityDefect()はCvConvexityDefect構造体のシーケンスを返すとありますので、CvConvexityDefect構造体の値を参照したいのですが、

    下のようにプログラムを書くと
    CvConvexityDefect *defect=0;
    defest = (CvSeq *)cvConvexityDefects(contours,hull,storage2);
    ビルドの時に
    ‘CvSeq *’ から ‘CvConvexityDefect *’ に変換できません。となってしまいます。
    なぜでしょうか?
    アドバイスをお願いします。

    • idojun より:

      おっしゃるように,cvConvexityDefects が返すのは,CvPoint ではなく CvConvexityDefect のシーケンスです.
      ですので,例えば,次のようになります.

        CvSeq *convexhull, *defects;
        if(! cvCheckContourConvexity(contours)) {
          convexhull = cvConvexHull2(contours, storage, 0, 0);
          defects = cvConvexityDefects(contours, convexhull, storage);
        }
      
        for(i=0; i<defects->total; i++) {
          // CvConvexityDefect *p = (CvConvexityDefect*)cvGetSeqElem(defects, i);
          CvConvexityDefect *p = CV_GET_SEQ_ELEM(CvConvexityDefect, defects, i);
          printf("(%d,%d)->(%d,%d)\n", p->start->x, p->start->y, p->end->x, p->end->y);
        }
      

      CvSeq* と CvConvexityDefect* は,全く異なる構造体を指すポインタなのでキャストすることはできません.CvSeq というシーケンスの要素が CvConvexityDefect であって,CvSeq が CvConvexityDefect の配列,というわけでありません.
      このような場合,上記のように,cvGetSeqElemではなくCV_GET_SEQ_ELEMマクロを利用すると,キャストの前に,defects->elem_size が sizeof(CvPoint) と一致しないエラーがでるので間違いに気づきやすいと思われます.

  47. koeda より:

    サーバメンテナンスのため,1時間程度,断続的にアクセスが行えなくなりますのでご注意下さい.
    ・作業日時:2010年8月9日(月) 2:00~6:00

  48. hogelog より:

    リファレンスマニュアルのページ下部に表示されているメッセージの
    「このドキュメントに誤りなどを見つけたらbug report まで報告してください.」
    のbug reportのリンクが古い
    http://sourceforge.net/tracker/?func=add&group_id=22870&atid=376677
    になっています。一応機能しているようですが、現在はメインの
    https://code.ros.org/trac/opencv/wiki
    に修正しておくべきではないでしょうか。

    • idojun より:

      OpenCV-2.1のドキュメントのbug report先も全て修正しておきました.ご報告ありがとうございます.

  49. idojun より:

    OpenCV.jpに対するご指摘や要望などをお願いします.

  50. idojun より:

    投稿は,このように表示されます.
    また,[cpp] … [/cpp] タグや, [python] … [/python] タグでコードを囲むと,以下のように表示することが出来ます(ここでは説明のために,全角ブラッケット”[”, “]”を利用していますが,実際には半角ブラケット “[", "]” を利用します).

    #include "cv.h"
    int main(int argc, char *argv[])
    {
      return 0;
    }
    

kenji Nonomura への返信