<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    1.0.x-學習Opencv與MFC混合編程之---視頻運動檢測

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    源代碼地址: http://download.csdn.net/detail/nuptboyzhb/3961668

    版本1.0.x新增內容

    視頻運動檢測

    Ø 新建菜單項,Learning OpenCV——> OpenCVr入門——>視頻運動檢測

    Ø 菜單項設置如下:

    RFID設備管理軟件

    Ø 建立類向導


    Ø 編輯代碼

    voidCCVMFCView::OnMyTestSport()

    {

           // TODO: Add your command handler codehere

           //Alt+F8 整理代碼

           CvCapture* capture;

           capture = cvCreateCameraCapture(0);//打開攝像頭

           if(capture==NULL)

           {

                  MessageBox("未檢測到攝像頭,請檢查攝像頭安裝是否正確");

           }

           else

           {

                 

                  CString WindowName1="攝像機";

                  IplImage *frame1 = 0;//第一幀

                  IplImage *frame2 = 0;//第二幀

                  IplImage *frame_sub= 0;//相減之后的幀

                  IplImage* pImg8u = NULL;//灰度圖

            //

                  assert(capture != NULL );//如果沒有打開,中斷

                  cvNamedWindow(WindowName1,CV_WINDOW_AUTOSIZE);

                  frame1= cvQueryFrame(capture);

                  frame_sub=cvCloneImage(frame1);

                  while(1)

                  {

                         frame2=cvQueryFrame(capture);

                         if(!frame2)

                         {

                                break;

                         }

                cvAbsDiff(frame1,frame2,frame_sub);

                         frame1=cvCloneImage(frame2);

                     cvMoveWindow(WindowName1, 150, 200);

                         cvShowImage(WindowName1,frame_sub);

                        

                         //  建立位圖

                         pImg8u =cvCreateImage(cvGetSize(frame_sub),IPL_DEPTH_8U,1);

                         cvCvtColor(frame_sub,pImg8u,CV_BGR2GRAY);  //彩色變灰階

                //--------------一下是計算直方圖-----------------------------

                         IplImage *src;

                         IplImage *histimg = 0;

                         CvHistogram *hist = 0;

                         int hdims = 256;     // 劃分HIST的個數,越高越精確

                         src=cvCloneImage(pImg8u);

                         float hranges_arr[] ={0,255};

                         float* hranges =hranges_arr;

                         int bin_w; 

                         float max_val;

                         int i;

                         cvNamedWindow("Histogram", 0 );

                        

                         hist = cvCreateHist( 1,&hdims, CV_HIST_ARRAY, &hranges, 1 ); // 計算直方圖

                         histimg= cvCreateImage( cvSize(320,200), 8, 3 );

                         cvZero( histimg );

                         cvCalcHist( &src, hist,0, 0 ); // 計算直方圖

                         cvGetMinMaxHistValue( hist,0, &max_val, 0, 0 );  // 只找最大值

                         cvConvertScale(hist->bins, hist->bins,

                                max_val ? 255. /max_val : 0., 0 ); // 縮放 bin 到區間 [0,255]

                         cvZero( histimg );

                         bin_w = histimg->width /hdims;  // hdims: 條的個數,則 bin_w 為條的寬度

                        

                         // 畫直方圖

                         for( i = 0; i < hdims;i++ )

                         {

                                double val = (cvGetReal1D(hist->bins,i)*histimg->height/255 );

                                CvScalar color =CV_RGB(255,255,0); //(hsv2rgb(i*180.f/hdims);

                                cvRectangle(histimg, cvPoint(i*bin_w,histimg->height),

                                       cvPoint((i+1)*bin_w,(int)(histimg->height- val)),

                                       color, 1, 8,0 );

                         }

                         cvMoveWindow("Histogram",550, 200);

                         cvShowImage( "Histogram",histimg );

                        

                         //------------------------------------------------------

                         char c = cvWaitKey(1);

                         if( c == 27 )

                         {

                                break;

                         }     

                  }

                  cvReleaseCapture( &capture );

                  cvDestroyWindow(WindowName1);

                  cvDestroyWindow("Histogram");

           }

          

    }

     

     

    from:http://blog.csdn.net/nupt123456789/article/details/7100114

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全