1

ipp7.1 を Windows にインストールして OpenCV2.4.2 で使用するには、どのような手順に従うべきか教えてください。Ipp7.1 評価版をダウンロードし、CMake 2.8 を使用してから、CMake で静的 OpenCV を構成し、vs2008 ですべてのプロジェクトを問題なくビルドしました。

静的プロジェクトの場合、OpenCV とサードパーティの次のリストを追加しました。

opencv_calib3d241.lib opencv_contrib241.lib opencv_core241.lib opencv_features2d241.lib opencv_flann241.lib opencv_gpu241.lib opencv_highgui241.lib opencv_imgproc241.lib opencv_legacy241.lib opencv_ml241.lib opencv_nonfree241.lib opencv_objdetect241.lib opencv_photo241.lib opencv_stitching241.lib opencv_ts241.lib opencv_video241.lib opencv_videostab241.ライブラリ

libjasper.lib libjasperd.lib libjpeg.lib libjpegd.lib libpng.lib libpngd.lib libtiff.lib libtiffd.lib zlib.lib zlibd.lib user32.lib

次に、IPP 静的ライブラリの次のリストを追加しました。

ippac_l.lib ippcc_l.lib ippch_l.lib ippcore_l.lib ippcv_l.lib ippdc_l.lib ippdi_l.lib ippi_l.lib ippj_l.lib
ippm_l.lib ippr_l.lib ippsc_l.lib
ipps_l.lib ippvc_l.lib ippvm_l.lib

私のプロジェクトは問題なくコンパイルされました。

IPP がインストールされ、正しく動作していることを確認する方法として、次のコードを使用しました。この関数には 2 つの入力引数があります。最初の 1 つは「opencv_lib」で、OpenCV のバージョンによって埋められます。しかし、私の問題は2番目のパラメータにあります。「add_modules」は常に空です。

const char* opencv_lib = 0;
const char* add_modules = 0;
cvGetModuleInfo(0, &opencv_lib,&add_modules);
printf("\t opencv_lib = %s,\n\t add_modules = %s\n\n", opencv_lib,add_modules);

別の問題もありますが、これは前の問題に関連していると思います。次のコードでは、同じループ コードの前にcvUseOptimized(1)andを使用しました。cvUseOptimized(0)しかし、奇妙な点は、処理時間が実際には両方で等しいということです!

double  t1, t2,timeCalc;  

    IplImage *template_image = cvLoadImage ("c:\\box.png",0);
    IplImage* converted_image= cvLoadImage ("c:\\box_in_scene.png",0);
    CvSize cvsrcSize    = cvGetSize(converted_image);

    cout << " image match template using OpenCV cvMatchTemplate() " << endl;
    IplImage *image_ncc, *result_ncc;
    image_ncc = cvCreateImage(cvsrcSize,8,1); 
    memcpy(image_ncc->imageData,converted_image->imageData,converted_image->imageSize);
    result_ncc = cvCreateImage(cvSize(converted_image->width -template_image->width+1,
                                            converted_image->height-template_image->height+1),IPL_DEPTH_32F,1);


    int NumUploadedFunction = cvUseOptimized(1);
    t1 = (double)cvGetTickCount();
    for (int j=0;j<LOOP;j++)
        cvMatchTemplate(image_ncc, template_image, result_ncc, CV_TM_CCORR_NORMED);
    t2 = (double)cvGetTickCount();
    timeCalc=(t2-t1)/((double)cvGetTickFrequency()*1000. * 1000.0);
    cout << " OpenCV matchtemplate using cross-correlation Valid: " << timeCalc << endl;


NumUploadedFunction = cvUseOptimized(0);
    t1 = (double)cvGetTickCount();
    for (int j=0;j<LOOP;j++)
        cvMatchTemplate(image_ncc, template_image, result_ncc, CV_TM_CCORR_NORMED);
    t2 = (double)cvGetTickCount();
    timeCalc=(t2-t1)/((double)cvGetTickFrequency()*1000. * 1000.0);
    cout << " OpenCV matchtemplate using cross-correlation Valid: " << timeCalc << endl;
4

0 に答える 0