《學習opencv》第四章課後習題1

來源:互聯網
上載者:User
本人自己做的:#include "stdafx.h"#include<opencv/cv.h>#include<opencv/highgui.h>int main(){ //a.1從視頻中趣圖並顯示。 CvCapture* capture = cvCreateFileCapture("C:\\test.avi");    IplImage* frame= cvQueryFrame( capture );    if( !frame ) return -1; cvNamedWindow("imagefromviedo", CV_WINDOW_AUTOSIZE );    cvShowImage("imagefromviedo", frame ); //a.2將圖轉換為灰階圖    IplImage* gray=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,1);    cvCvtColor(frame,gray,CV_BGR2GRAY); cvNamedWindow("convert2gray", CV_WINDOW_AUTOSIZE );    cvShowImage("convert2gray", gray ); //a.3對映像做canny邊緣檢測    IplImage* toCanny=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,1);    cvCanny(gray,toCanny,50,150,3); cvNamedWindow("Canny",CV_WINDOW_AUTOSIZE);    cvShowImage("Canny", toCanny);    //b.三合一 IplImage* merge=cvCreateImage(cvSize(3*frame->width,frame->height),IPL_DEPTH_8U,3);    cvSetZero(merge); CvRect rect1=cvRect(0,0,frame->width,frame->height);    cvSetImageROI(merge,rect1); frame->nChannels =3;    cvCopy(frame,merge,NULL);    cvResetImageROI(merge); CvRect rect2=cvRect(frame->width,0,frame->width,frame->height);    cvSetImageROI(merge,rect2); gray->nChannels =3;    cvCopy(gray,merge,NULL);    cvResetImageROI(merge); CvRect rect3=cvRect(2*frame->width,0,frame->width,frame->height);    cvSetImageROI(merge,rect3); toCanny->nChannels =3;    cvCopy(toCanny,merge,NULL);    cvResetImageROI(merge); //c.加標誌 CvFont textfont = cvFont(10.0,1);      cvInitFont(&textfont, CV_FONT_HERSHEY_SIMPLEX, 0.5f, 0.5f, 0, 1);      cvPutText(merge, "Frame", cvPoint(10,20), &textfont, cvScalar(0,0,255));      cvPutText(merge, "Gray", cvPoint(frame->width+10,20), &textfont, cvScalar(255,0,0));      cvPutText(merge, "toCanny", cvPoint(frame->width*2+10, 20), &textfont, cvScalar(0,255,0));   cvNamedWindow("merge", CV_WINDOW_AUTOSIZE );    cvShowImage("merge", merge ); cvWaitKey(0);         cvDestroyWindow("merge"); cvReleaseImage( &merge );        cvReleaseCapture( &capture );    cvDestroyWindow("imagefromviedo"); cvReleaseImage( &frame ); cvDestroyWindow("convert2gray"); cvReleaseImage( &gray );      cvDestroyWindow("Canny"); cvReleaseImage( &toCanny );     return 0; /*//a.1從視頻中趣圖並顯示。 CvCapture* capture = cvCreateFileCapture("c:\\test.avi");    IplImage* frame= cvQueryFrame( capture );    if( !frame ) return -1; cvNamedWindow("imagefromviedo", CV_WINDOW_AUTOSIZE );    cvShowImage("imagefromviedo", frame ); //a.2將圖轉換為灰階圖    IplImage* gray=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,1); IplImage* image_gray=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,3);//用於合并顯示的灰階圖    cvCvtColor(frame,gray,CV_BGR2GRAY); cvCvtColor(gray,image_gray,CV_GRAY2BGR); cvNamedWindow("convert2gray", CV_WINDOW_AUTOSIZE );    cvShowImage("convert2gray", image_gray ); //a.3對映像做canny邊緣檢測    IplImage* toCanny=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,1); IplImage* image_toCanny=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,3);//用於合并顯示的Canny邊緣檢測圖     cvCanny(gray,toCanny,50,150,3); cvCvtColor(toCanny,image_toCanny,CV_GRAY2BGR); cvNamedWindow("Canny",CV_WINDOW_AUTOSIZE);    cvShowImage("Canny",image_toCanny);    //b.三合一 IplImage* merge=cvCreateImage(cvSize(3*frame->width,frame->height),IPL_DEPTH_8U,3);    cvSetZero(merge); CvRect rect1=cvRect(0,0,frame->width,frame->height);    cvSetImageROI(merge,rect1);    cvCopy(frame,merge,NULL);    cvResetImageROI(merge); CvRect rect2=cvRect(frame->width,0,frame->width,frame->height);    cvSetImageROI(merge,rect2);    cvCopy(image_gray,merge,NULL);    cvResetImageROI(merge); CvRect rect3=cvRect(2*frame->width,0,frame->width,frame->height);    cvSetImageROI(merge,rect3);    cvCopy(image_toCanny,merge,NULL);    cvResetImageROI(merge); cvNamedWindow("merge"); cvShowImage("merge",merge); cvWaitKey(0);       cvReleaseCapture( &capture ); cvReleaseImage( &frame );    cvDestroyWindow("imagefromviedo"); cvReleaseImage( &gray ); cvReleaseImage( &image_gray );    cvDestroyWindow("convert2gray"); cvReleaseImage( &toCanny ); cvReleaseImage( &image_toCanny );    cvDestroyWindow("Canny"); cvReleaseImage( &merge );    cvDestroyWindow("merge"); return 0;*/} 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.