亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

opencv常用函數備忘

系統 2108 0

?//顯示圖片

      
        1
      
       IplImage * src = cvLoadImage(
      
        "
      
      
        xx.JPG
      
      
        "
      
      
        );


      
      
        2
      
       cvNamedWindow(
      
        "
      
      
        show_image
      
      
        "
      
      ,
      
        1
      
      
        );


      
      
        3
      
       cvShowImage(
      
        "
      
      
        show_image
      
      
        "
      
      
        ,src);


      
      
        4
      
       cvWaitKey(
      
        0
      
      
        );


      
      
        5
      
       cvReleaseImage(&
      
        str);


      
      
        6
      
       cvDestroyWindow(
      
        "
      
      
        show_image
      
      
        "
      
      );
    

?

?//色彩空間轉換,轉換類型為CV_BGR2GRAY

      
        1
      
       IplImage* dst = cvCreateImage(cvGetSize(src),src->depth,
      
        1
      
      
        );


      
      
        2
      
      
        cvCvtColor(src,dst,CV_BGR2GRAY);


      
      
        3
      
    

?//開、閉、膨脹、腐蝕操作

      
        1
      
       IplConvKernel* element = cvCreateStructuringElementEx(
      
        3
      
      ,
      
        3
      
      ,
      
        0
      
      ,
      
        0
      
      , CV_SHAPE_ELLIPSE,
      
        0
      
      );
      
        //
      
      
        創建3*3橢圓結構元素 
      
      
        2
      
       IplImage * temp=cvCreateImage(cvGetSize(pGrayImg), IPL_DEPTH_8U, 
      
        1
      
      
         );


      
      
        3
      
       cvMorphologyEx(pGrayImg,pGrayImg, temp, element,CV_MOP_CLOSE,
      
        1
      
      );
      
        //
      
      
        閉操作 先膨脹再腐蝕
      
      
        4
      
       cvMorphologyEx(pGrayImg,pGrayImg, temp, element,CV_MOP_OPEN,
      
        1
      
      );
      
        //
      
      
        開操作 先腐蝕再膨脹
      
      
        5
      
       cvReleaseStructuringElement(&
      
        element);


      
      
        6
      
       cvReleaseImage(&
      
        temp);


      
      
        7
      
       cvDilate(  pGrayImg, pGrayImg, NULL, 
      
        1
      
      );
      
        //
      
      
        膨脹
      
      
        8
      
       cvErode( pGrayImg, pGrayImg, NULL, 
      
        1
      
      );
      
        //
      
      
        腐蝕
      
    

?

//邊緣檢測

      cvCanny(pGrayImg,pGrayImg, 
      
        200
      
      , 
      
        220
      
      , 
      
        3
      
       );
      
        //
      
      
        邊緣檢測  
      
    

?

?

?

//二值圖像中檢索輪廓

      
        1
      
      
        int
      
       cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour,
      
        int
      
       header_size=
      
        sizeof
      
      (CvContour),
      
        int
      
       mode=CV_RETR_LIST,
      
        int
      
       method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(
      
        0
      
      ,
      
        0
      
      ) ); 
    

http://blog.csdn.net/augusdi/article/details/9000893

?

//二值圖像中找圓、橢圓擬合

      
         1
      
      
        //
      
      
        橢圓擬合
      
      
         2
      
      
        void
      
       my_FitEllipse(CvSeq *pContour, CvBox2D *
      
        box_rect)


      
      
         3
      
      
        {


      
      
         4
      
           CvMat*p=cvCreateMat(
      
        1
      
      ,pContour->
      
        total,CV_32FC2);


      
      
         5
      
           CvPoint2D32f *p_temp=(CvPoint2D32f*)(p->
      
        data.fl);


      
      
         6
      
      
         7
      
      
        for
      
      (
      
        int
      
       i=
      
        0
      
      ;i<pContour->total;i++
      
        )


      
      
         8
      
      
            {


      
      
         9
      
               CvPoint*p0=(CvPoint*
      
        )cvGetSeqElem(pContour,i);


      
      
        10
      
               *p_temp=cvPointTo32f(*
      
        p0);


      
      
        11
      
               p_temp++
      
        ; 


      
      
        12
      
      
            }


      
      
        13
      
           *box_rect  =
      
         cvFitEllipse2(p);


      
      
        14
      
           cvReleaseMat(&
      
        p);


      
      
        15
      
      
        }


      
      
        16
      
      
        17
      
      
        /*
      
      
        18
      
      
        *功能描述:


      
      
        19
      
      
        *   二值圖像中找圓形


      
      
        20
      
      
        *輸入:


      
      
        21
      
      
        *    pStrimg - 原圖


      
      
        22
      
      
        *    vCircle - 圓集合


      
      
        23
      
      
        */
      
      
        24
      
      
        void
      
       findCircle(IplImage *pStrImg, vector<Ccircle> &
      
        vCircle)


      
      
        25
      
      
        {


      
      
        26
      
           CvSeq *pContour =
      
         NULL;   


      
      
        27
      
           CvSeq *pConInner =
      
         NULL;   


      
      
        28
      
           CvMemStorage *pStorage =
      
         NULL;  


      
      
        29
      
           IplImage *pTmpImg = cvCreateImage(cvGetSize(pStrImg), pStrImg->depth, pStrImg->
      
        nChannels);


      
      
        30
      
      
            cvCopy(pStrImg, pTmpImg);


      
      
        31
      
      
        32
      
      
        //
      
      
         查找所有輪廓   
      
      
        33
      
           pStorage = cvCreateMemStorage(
      
        0
      
      
        );   


      
      
        34
      
           cvFindContours(pTmpImg, pStorage, &pContour, 
      
        sizeof
      
      
        (CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);


      
      
        35
      
      
        36
      
      
        int
      
       wai = 
      
        0
      
      
        ;  


      
      
        37
      
      
        int
      
       nei = 
      
        0
      
      
        ;  


      
      
        38
      
      
        for
      
       (; pContour != NULL; pContour = pContour->
      
        h_next)   


      
      
        39
      
      
            {   


      
      
        40
      
               wai++
      
        ;  


      
      
        41
      
      
        //
      
      
         內輪廓循環   
      
      
        42
      
      
        for
      
       (pConInner = pContour->v_next; pConInner != NULL; pConInner = pConInner->
      
        h_next)   


      
      
        43
      
      
                {   


      
      
        44
      
                   nei++
      
        ;  


      
      
        45
      
      
                }  


      
      
        46
      
      
        if
      
      (pContour->total < 
      
        5
      
      
        )


      
      
        47
      
      
                {


      
      
        48
      
      
        //
      
      
        TRACE("Number of points should be >= 5\n");
      
      
        49
      
      
        continue
      
      
        ;


      
      
        50
      
      
                }


      
      
        51
      
      
                CvBox2D box_rect;


      
      
        52
      
               my_FitEllipse(pContour, &
      
        box_rect);


      
      
        53
      
      
        if
      
      (fabs(box_rect.size.width - box_rect.size.height) < 
      
        1
      
      ){
      
        //
      
      
        橢圓長軸,短軸長度相近時判斷為圓
      
      
        54
      
      
                    Ccircle circle;


      
      
        55
      
                   circle.center.x =
      
         box_rect.center.x;


      
      
        56
      
                   circle.center.y =
      
         box_rect.center.y;


      
      
        57
      
                   circle.r = (box_rect.size.height + box_rect.size.width) / 
      
        4
      
      
        ;


      
      
        58
      
      
                    vCircle.push_back(circle);


      
      
        59
      
      
                }


      
      
        60
      
      
        //
      
      
        cvEllipseBox(pBinary, box_rect, CV_RGB(255, 255, 255));
      
      
        61
      
               TRACE(
      
        "
      
      
        center:%f,%f, w:%f, h:%f\n
      
      
        "
      
      
        , box_rect.center.x, box_rect.center.y, box_rect.size.width, box_rect.size.height);


      
      
        62
      
      
        63
      
      
        //
      
      
        CvRect rect = cvBoundingRect(pContour,0);


      
      
        64
      
      
        //
      
      
        cvRectangle(pBinary, cvPoint(rect.x, rect.y), cvPoint(rect.x + rect.width, rect.y + rect.height),CV_RGB(255,255, 255), 1, 8, 0);
      
      
        65
      
      
            }   


      
      
        66
      
      
        67
      
           printf(
      
        "
      
      
        wai = %d, nei = %d
      
      
        "
      
      
        , wai, nei);  


      
      
        68
      
           cvReleaseImage(&
      
        pTmpImg);


      
      
        69
      
           cvReleaseMemStorage(&
      
        pStorage);   


      
      
        70
      
           pStorage =
      
         NULL;   


      
      
        71
      
      
        72
      
       }
    

?

?

//圖像上點的訪問

      
         1
      
           uchar*
      
        data ;


      
      
         2
      
           uchar*
      
        ivs_data ;


      
      
         3
      
      
        //
      
      
        IplImage*ivs_image = cvCreateImage(cvGetSize(gray_image),IPL_DEPTH_8U, 1);
      
      
         4
      
      
         5
      
           ivs_height    = dst->
      
        height;


      
      
         6
      
           ivs_width     = dst->
      
        width;


      
      
         7
      
           ivs_step      = dst->widthStep/
      
        sizeof
      
      
        (uchar);


      
      
         8
      
           ivs_channel = dst->
      
        nChannels;


      
      
         9
      
           data   = (uchar*)str->
      
        imageData;


      
      
        10
      
      
        //
      
      
        printf("Processing a %d X %d image with %d channel!\n",ivs_height,ivs_width,ivs_channel);
      
      
        11
      
      
        12
      
      
        13
      
           ivs_data = (uchar*)dst->
      
        imageData;


      
      
        14
      
      
        15
      
      
        16
      
      
        //
      
      
         反色圖像
      
      
        17
      
      
        for
      
      (ivs_i=
      
        0
      
      ;ivs_i<ivs_height;ivs_i++
      
        )


      
      
        18
      
      
            {


      
      
        19
      
      
        for
      
      (ivs_j=
      
        0
      
      ;ivs_j<ivs_width;ivs_j++
      
        )


      
      
        20
      
      
                {


      
      
        21
      
      
        for
      
      (ivs_k=
      
        0
      
      ;ivs_k<ivs_channel;ivs_k++
      
        )


      
      
        22
      
      
                    {


      
      
        23
      
                       ivs_data[ivs_i*ivs_step+ivs_j*ivs_channel+ivs_k]=
      
        255
      
      -data[ivs_i*ivs_step+ivs_j*ivs_channel+
      
        ivs_k];


      
      
        24
      
      
        25
      
      
        26
      
                   }
      
        //
      
      
        k
      
      
        27
      
               }
      
        //
      
      
        j
      
      
        28
      
           }
      
        //
      
      
        i
      
    

?

opencv常用函數備忘


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本久久色 | 免费观看成人久久网免费观看 | 亚洲五月色 | 老司机午夜在线视频免费观 | 视频三区精品中文字幕 | 亚洲日本一区二区三区高清在线 | 久久精品在线观看 | 亚洲欧美综合国产精品一区 | 欧美日韩国产三级 | oldwoman中国老女人tv | 久久99久久99 | 久久精品无遮挡一级毛片 | 欧美色另类 | 四虎国产精品免费久久影院 | 日日日影院 | 亚洲精品国产专区一区 | 97视频在线视频 | 亚洲va欧美va国产va天堂影 | 九九精品免费观看在线 | 国产精品久久久久久久久久久威 | 四虎2020| www.黄色片网站 | 99久久精品免费精品国产 | 亚洲精品国产经典一区二区 | 国产精品福利一区二区久久 | 视频在线一区二区三区 | 欧美一级视频免费 | 四虎永久在线精品影院 | 久久国产视频一区 | 性生活视频网站 | 九九免费在线视频 | 日韩一区二区三区在线观看 | 国产高清免费午夜在线视频 | 国产99在线播放免费 | 在线观看福利网站 | 久久久免费视频播放 | 国内免费一区二区三区视频 | 中文字幕一区二区三区四区五区人 | 日本久久久久久久中文字幕 | 欧美日韩中文国产一区 | 国产片一区二区三区 |