《学习opencv》第四章课后习题1

news/2024/7/8 15:35:03 标签: merge, image, null, c
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="htmledit_views">
<code class="language-cpp">本人自己做的:




#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("class="tags" href="/tags/IMAGE.html" title=image>imagefromviedo", CV_WINDOW_AUTOSIZE );
    cvShowImage("class="tags" href="/tags/IMAGE.html" title=image>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* class="tags" href="/tags/MERGE.html" title=merge>merge=cvCreateImage(cvSize(3*frame->width,frame->height),IPL_DEPTH_8U,3);
    cvSetZero(class="tags" href="/tags/MERGE.html" title=merge>merge);

 CvRect rect1=cvRect(0,0,frame->width,frame->height);
    cvSetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge,rect1);
 frame->nChannels =3;
    cvCopy(frame,class="tags" href="/tags/MERGE.html" title=merge>merge,NULL);
    cvResetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge);

 CvRect rect2=cvRect(frame->width,0,frame->width,frame->height);
    cvSetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge,rect2);
 gray->nChannels =3;
    cvCopy(gray,class="tags" href="/tags/MERGE.html" title=merge>merge,NULL);
    cvResetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge);

 CvRect rect3=cvRect(2*frame->width,0,frame->width,frame->height);
    cvSetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge,rect3);
 toCanny->nChannels =3;
    cvCopy(toCanny,class="tags" href="/tags/MERGE.html" title=merge>merge,NULL);
    cvResetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge);

 //c.加标志
 CvFont textfont = cvFont(10.0,1);  
    cvInitFont(&textfont, CV_FONT_HERSHEY_SIMPLEX, 0.5f, 0.5f, 0, 1);  
    cvPutText(class="tags" href="/tags/MERGE.html" title=merge>merge, "Frame", cvPoint(10,20), &textfont, cvScalar(0,0,255));  
    cvPutText(class="tags" href="/tags/MERGE.html" title=merge>merge, "Gray", cvPoint(frame->width+10,20), &textfont, cvScalar(255,0,0));  
    cvPutText(class="tags" href="/tags/MERGE.html" title=merge>merge, "toCanny", cvPoint(frame->width*2+10, 20), &textfont, cvScalar(0,255,0));  

 cvNamedWindow("class="tags" href="/tags/MERGE.html" title=merge>merge", CV_WINDOW_AUTOSIZE );
    cvShowImage("class="tags" href="/tags/MERGE.html" title=merge>merge", class="tags" href="/tags/MERGE.html" title=merge>merge );

 cvWaitKey(0);

 

    

    cvDestroyWindow("class="tags" href="/tags/MERGE.html" title=merge>merge");
 cvReleaseImage( &class="tags" href="/tags/MERGE.html" title=merge>merge );
    
    cvReleaseCapture( &capture );
    cvDestroyWindow("class="tags" href="/tags/IMAGE.html" title=image>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("class="tags" href="/tags/IMAGE.html" title=image>imagefromviedo", CV_WINDOW_AUTOSIZE );
    cvShowImage("class="tags" href="/tags/IMAGE.html" title=image>imagefromviedo", frame );

 //a.2将图转换为灰度图
    IplImage* gray=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,1);
 IplImage* class="tags" href="/tags/IMAGE.html" title=image>image_gray=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,3);//用于合并显示的灰度图
    cvCvtColor(frame,gray,CV_BGR2GRAY);
 cvCvtColor(gray,class="tags" href="/tags/IMAGE.html" title=image>image_gray,CV_GRAY2BGR);
 cvNamedWindow("convert2gray", CV_WINDOW_AUTOSIZE );
    cvShowImage("convert2gray", class="tags" href="/tags/IMAGE.html" title=image>image_gray );

 //a.3对图像做canny边缘检测
    IplImage* toCanny=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,1);
 IplImage* class="tags" href="/tags/IMAGE.html" title=image>image_toCanny=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,3);//用于合并显示的Canny边缘检测图
 
    cvCanny(gray,toCanny,50,150,3);
 cvCvtColor(toCanny,class="tags" href="/tags/IMAGE.html" title=image>image_toCanny,CV_GRAY2BGR);
 cvNamedWindow("Canny",CV_WINDOW_AUTOSIZE);
    cvShowImage("Canny",class="tags" href="/tags/IMAGE.html" title=image>image_toCanny);
  
 

 //b.三合一
 IplImage* class="tags" href="/tags/MERGE.html" title=merge>merge=cvCreateImage(cvSize(3*frame->width,frame->height),IPL_DEPTH_8U,3);
    cvSetZero(class="tags" href="/tags/MERGE.html" title=merge>merge);

 CvRect rect1=cvRect(0,0,frame->width,frame->height);
    cvSetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge,rect1);
    cvCopy(frame,class="tags" href="/tags/MERGE.html" title=merge>merge,NULL);
    cvResetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge);

 CvRect rect2=cvRect(frame->width,0,frame->width,frame->height);
    cvSetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge,rect2);
    cvCopy(class="tags" href="/tags/IMAGE.html" title=image>image_gray,class="tags" href="/tags/MERGE.html" title=merge>merge,NULL);
    cvResetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge);

 CvRect rect3=cvRect(2*frame->width,0,frame->width,frame->height);
    cvSetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge,rect3);
    cvCopy(class="tags" href="/tags/IMAGE.html" title=image>image_toCanny,class="tags" href="/tags/MERGE.html" title=merge>merge,NULL);
    cvResetImageROI(class="tags" href="/tags/MERGE.html" title=merge>merge);

 cvNamedWindow("class="tags" href="/tags/MERGE.html" title=merge>merge");
 cvShowImage("class="tags" href="/tags/MERGE.html" title=merge>merge",class="tags" href="/tags/MERGE.html" title=merge>merge);

 cvWaitKey(0);

   
    cvReleaseCapture( &capture );
 cvReleaseImage( &frame );
    cvDestroyWindow("class="tags" href="/tags/IMAGE.html" title=image>imagefromviedo");

 cvReleaseImage( &gray );
 cvReleaseImage( &class="tags" href="/tags/IMAGE.html" title=image>image_gray );
    cvDestroyWindow("convert2gray");

 cvReleaseImage( &toCanny );
 cvReleaseImage( &class="tags" href="/tags/IMAGE.html" title=image>image_toCanny );
    cvDestroyWindow("Canny");

 cvReleaseImage( &class="tags" href="/tags/MERGE.html" title=merge>merge );
    cvDestroyWindow("class="tags" href="/tags/MERGE.html" title=merge>merge");
 return 0;*/
}

 



code>

 
cle>

http://www.niftyadmin.cn/n/791203.html

相关文章

mysql命令学习笔记(1):show table status like 'user';显示表的相关信息

show table status like user;显示表的相关信息 -----------------------------------------------------------------------------------------------------------------------------------| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_leng…

IOS百度地图语音导航

VoiceNavigationViewController.m* 客户端需安装百度导航地图#import "VoiceNavigationViewController.h" #import "BMapKit.h" #import "BMKNavigation.h"interface VoiceNavigationViewController ()<BMKMapViewDelegate> {BMKMapView* …

JESD204C入门:第1部分-有何新增及对您有用的内容

本文内容来自ADI的技术文章&#xff0c;作者&#xff1a;Del Jones原网址为&#xff1a;https://www.analog.com/cn/analog-dialogue/articles/jesd204c-primer-part1.html‍许多行业的数据密集型应用持续突破界限&#xff0c;需要快速高效地传输有效载荷数据。5G通信网络系统要…

build path libraries java基础--Jar包添加到build path方式说明--01

build path libraries java基础--Jar包添加到build path方式说明--01 摘自: http://blog.csdn.net/haolongabc/article/details/7007701 java基础--Jar包添加到build path方式说明--01 前言&#xff1a;这段短文是根据工作实践结合自己的理解写的&#xff0c;有不对的地方恳请指…

芯片工艺的5nm和7nm是怎么来的?揭开芯片工艺和摩尔定律背后的“秘密”

1&#xff1a;摩尔定律1965年&#xff0c;硅谷传奇&#xff0c;仙童“八叛徒”之一&#xff0c;英特尔原首席执行官和荣誉主席&#xff0c;伟大的规律发现者戈登摩尔正在准备一个关于计算机存储器发展趋势的报告。在他开始绘制数据时&#xff0c;发现了一个惊人的趋势。每个新的…

《学习opencv》第四章课后习题2

// 4-2.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<opencv/cv.h>#include<opencv/highgui.h>int a,b;int showtext0;void my_mouse_callback(int event, int x, int y, int flags, void* param );void mouseHandler(int event, i…

用代码进行场景切换

多个场景之间切换的样式(Style)总共有5个&#xff1a;Modal(模态) -- 过渡到另一个场景&#xff0c;以完成一项任务。任务完成后&#xff0c;将关闭该场景&#xff0c;并返回到原来的场景。Push(压入) -- 创建一个场景链&#xff0c;用户可在其中前后移动。用于导航视图控制器。…

JESD204B 和 JESD204C 之间的差异

JESD204 标准 JESD204规范定义了实现协议数据流的四个关键层&#xff0c;如图9所示。 传输层映射样本和已帧、已解码的字节之间的转换。可选的扰乱层对八位元进行扰动/解扰动&#xff0c;分散谱峰值以降低电磁干扰(EMI)。数据链路层处理链路同步、设置和维护&#xff0c;并对…