Opencv邊緣檢測

來源:互聯網
上載者:User

        最近開始學習Opencv,使用Opencv內建的Canny演算法做了一個小應用,頓時感受到電腦視覺的奇妙。
程式很簡單,流程如下:
                1.開啟網路攝影機 

                2.對視頻進行邊緣檢測

                3.輸出檢測到的邊緣 

       程式提供了2個滑動條,可以根據具體情況,自己更改閾值觀察效果

開發環境:VC++6.0 + Opencv1.0

代碼如下:

#include "cxcore.h"#include "cvcam.h"#include "cv.h"#include "highgui.h"#include <stdio.h>IplImage *frame;void show();void on_trackbar1(int h);void on_trackbar2(int h);int low = 0,high =100;int main(){char c;int edge_thresh1 = 1;int edge_thresh2 = 100;//讀取網路攝影機    CvCapture *capture = cvCreateCameraCapture(0);cvNamedWindow("Camera",CV_WINDOW_AUTOSIZE);//建立2個捲軸,on_trackbar1,on_trackbar2為回呼函數cvCreateTrackbar( "Low", "Camera", &edge_thresh1, 100, on_trackbar1); cvCreateTrackbar( "High", "Camera", &edge_thresh2, 100, on_trackbar2); while(1){frame = cvQueryFrame(capture);//顯示提取映像邊緣的視頻show();//按ESC鍵退出c = cvWaitKey(33);if( c == 27 )break;}cvReleaseCapture( &capture );cvDestroyWindow( "Camera" );    return 0;}void on_trackbar1(int h){low = h;show();}void on_trackbar2(int h){high = h;show();}void show(){IplImage* gray = cvCreateImage( cvSize(frame->width, frame->height ), IPL_DEPTH_8U, 1 );IplImage* out = cvCreateImage( cvSize(frame->width, frame->height ), IPL_DEPTH_8U, 1 );IplImage* image = cvCreateImage( cvSize(frame->width, frame->height ), IPL_DEPTH_8U, 3 );//轉為灰階圖cvCvtColor(frame,gray,CV_RGB2GRAY);//cvCanny只能識別灰階圖cvCanny( gray, out, low, high, 3 );//origin屬性是標註視頻的原點是左上方還是左下角,要使原點統一,否則顯示的視頻會倒置if( out->origin != gray->origin )out->origin = gray->origin;//out是提取的邊緣映像,是一個單通道的;這裡讓它顯示為3通道的,用imagecvCopy( frame, image, out );if ( image->origin != frame->origin)image->origin = frame->origin;//顯示3通道的邊緣映像cvShowImage( "Camera", image );//釋放記憶體cvReleaseImage( &image );cvReleaseImage( &gray );cvReleaseImage( &out );}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.