【opencv课后练习】-- 第二章节

计算机视觉教程(第2版) 这是一本关于计算机视觉教程第2版的书对应的完整ppt课件,对计算机视觉方面有一定参考。 立即下载

      网上查了下,没能找到关于learning opencv的课后习题讲解,现张贴出自我学习过程的code,与广大Coder共同探讨学习,多多指出小弟的错误,谢谢。

题目:使用例2-10中的视频捕捉和存储方法,结合例2-5中的doPyrDown()创建一个程序,使其从摄像机读入视频数据并将缩放变换后的彩色图像存入磁盘。

/*
	使用例2-10中的视频捕捉和存储方法,结合例2-5中的doPyrDown()创建一个程序,
	使其从摄像机读入视频数据并将缩放变换后的彩色图像存入磁盘
	chapter2-3
*/
#include <opencv2/core/core.hpp>                  
#include <opencv2/highgui/highgui.hpp>                  
#include <opencv2/imgproc/imgproc.hpp>   
#include <cv.h>  
#include <iostream>                
using namespace std;  
using namespace cv;
IplImage *doPyrDown(IplImage * in)
{
	IplImage* out = cvCreateImage(
		cvSize(in->width/2,in->height/2),
		in->depth,
		in->nChannels
		);
	//借用下opencv1 中的cvPyrDown函数修改frame尺寸
	cvPyrDown(in,out,CV_GAUSSIAN_5x5);
	return out;
}

int main (int argc,char* argv[])
{
	
	CvCapture* capture = cvCreateFileCapture("D:\\123.avi");
	if(!capture)
	{
		cout<<"Fail to open!"<<endl;
		return -1;
	}
	IplImage* bgr_frame = cvQueryFrame(capture);
	double fps = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
	CvSize size = cvSize(
		(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH)/2,
		(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT)/2
		);
	CvVideoWriter *writer = cvCreateVideoWriter(
		"2.avi",
		CV_FOURCC('M','J','P','G'),
		fps,
		size
		);
	IplImage * logpolar_frame = cvCreateImage(
		size,
		IPL_DEPTH_8U,
		3
		);
	while( (bgr_frame = cvQueryFrame(capture)) != NULL )
	{
		IplImage* out =  doPyrDown(bgr_frame);
		cvWriteFrame(writer,out);
	}
	cvReleaseVideoWriter(&writer);
	cvReleaseImage(&logpolar_frame);
	cvReleaseCapture(&capture);
	return 0;
	
}

题目4:修改练习3的代码,结合例2-1,将变换结果显示在窗口中。

/*
	修改练习3的代码,结合例2-1,将变换结果显示在窗口中。
	chapter2-4
*/
#include <opencv2/core/core.hpp>                  
#include <opencv2/highgui/highgui.hpp>                  
#include <opencv2/imgproc/imgproc.hpp>   
#include <cv.h>  
#include <iostream>                
using namespace std;  
using namespace cv;
IplImage *doPyrDown(IplImage * in,int filter = IPL_GAUSSIAN_5x5)
{
	IplImage* out = cvCreateImage(
		cvSize((int)(in->width/2),(int)(in->height/2)),
		in->depth,
		in->nChannels
		);
	//借用下opencv1 中的cvPyrDown函数修改frame尺寸
	cvPyrDown(in,out,CV_GAUSSIAN_5x5);
	return out;
}

int main (int argc,char* argv[])
{
	
	CvCapture* capture = cvCreateFileCapture("D:\\123.avi");
	if(!capture)
	{
		cout<<"Fail to open!"<<endl;
		return -1;
	}
	IplImage* bgr_frame = cvQueryFrame(capture);
	double fps = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
	CvSize size = cvSize(
		(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH)/2,
		(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT)/2
		);
	CvVideoWriter *writer = cvCreateVideoWriter(
		"3.avi",
		CV_FOURCC('M','J','P','G'),
		fps,
		size
		);
	IplImage * logpolar_frame = cvCreateImage(
		size,
		IPL_DEPTH_8U,
		3
		);

	while( (bgr_frame = cvQueryFrame(capture)) != NULL )
	{
		IplImage* out =  doPyrDown(bgr_frame);
		cvWriteFrame(writer,out);
	}
	cvReleaseVideoWriter(&writer);
	cvReleaseImage(&logpolar_frame);
	cvReleaseCapture(&capture);
	cvNamedWindow("src",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("dis");
	CvCapture* capture_dis = cvCreateFileCapture("2.avi");
	CvCapture* capture_src = cvCreateFileCapture("D:\\123.avi");
	while(true)
	{
		IplImage* src = cvQueryFrame(capture_src);
		IplImage* dis = cvQueryFrame(capture_dis);
		if(src!=NULL && dis != NULL)
		{
			cvShowImage("src",src);
			cvShowImage("dis",dis);
		}
		else 
		{
			break;
		}

	}
	cvWaitKey(0);

	return 0;
	
}


题目五:对于练习4种的代码进行修改,参考2-3,给程序添加滚动条,可以动态缩放比例。采用摄像头动态显示

/*
	对于练习4种的代码进行修改,参考2-3,给程序添加滚动条,可以动态缩放比例
	chapter2-5
*/
#include <opencv2/core/core.hpp>                  
#include <opencv2/highgui/highgui.hpp>                  
#include <opencv2/imgproc/imgproc.hpp>   
#include <cv.h>  
#include <iostream>                
using namespace std;  
using namespace cv;
int g_slider_position = 0;
////缩放比例
int g_scaling = 2;    
CvCapture* g_capture = NULL;
IplImage *doPryDown(IplImage * in,int filter = IPL_GAUSSIAN_5x5)
{
	IplImage* out = cvCreateImage(
		cvSize((int)(in->width/2),(int)(in->height/2)),
		in->depth,
		in->nChannels
		);
	//借用下opencv1 中的cvPyrDown函数修改frame尺寸
	cvPyrDown(in,out,CV_GAUSSIAN_5x5);
	return out;
}
//视频播放控制 
void onTrackbarSlide(int pos)
{
    // 改变缩放比例
     g_scaling = pos + 2;
}
int main()
{
	VideoCapture cap(0);
	Mat img;
	IplImage* dis;
	cvNamedWindow("src");
	//创建滚动条
	cvCreateTrackbar("scaling","src", &g_slider_position, 6, onTrackbarSlide);
	while(cap.read(img))
	{
		if(!img.empty())
		{
			IplImage frame = IplImage(img);
			dis = doPryDown(&frame);
			for(int i = 2; i < g_scaling; i++)
			{
				dis = doPryDown( dis);
			}
			cvShowImage("src", dis);
			char c = cvWaitKey(50);
			if (c == 27)
			{
				break;
			}
		}

	}
	cvReleaseImage( &dis);
	cvDestroyWindow("src");
	return 0;
}



        
《学习OpenCV》习题答案 经过VS2008调试的程序,学习OpenCV的习题答案 立即下载

相关推荐

OpenCV计算机视觉基础教程(Python版)(慕课版)-源代码及相关素材资源.zip

课本主讲内容如下,难度深浅适中,没有负责的公式推导,但可以明白什么原理,非常适合本科教学用,偏应用,每个章节对应的源代码都在压缩文件里面。 第一章内容是计算机视觉概述,包含计算机视觉的定义,任务和应用 第二章是Opencv起步,包含opencv简介,pycharm环境配置,opencv文档和示例 第三章是图像处理基础,包含numpy简介,opencv图像基础操作,图像运算(加法运算,加权加法运算,位运算) 第四章是图形用户界面,包含窗口控制,绘图,响应鼠标事件, 第五章是图像变换,包含色彩空间变换,几何变换,图像模糊,阈值处理,形态变换, 第六章是边缘和轮廓,包含边缘检测sobel算子和canny边缘检测,霍夫变换 第七章是直方图,包含直方图基础和直方图均衡化,二维直方图, 第八章模板匹配和图像分割,包含模板匹配,图像分割,交互式前景提取. 第九章是特征检测,包含角检测,特征点检测,特征匹配。对象查找。 以上是课本教材目录。

Learning OpenCV 3 章节习题——第6章

目录 1.绘图练习 2.灰度练习 3.动态文字练习 4.编写绘图程序 5.计算直线的像素数 5.1 什么情况下4连通和8连通能得到相同的像素数? 5.2 哪一种连通方式有更多的像素数? 5.3 在4连通和8连通的两种情况下,对于一条给定的直线段,直线长度和使用迭代器计算出的像素数之间的区别是什么?哪一种连接更接近真实的直线长度? 1 绘图练习 //1.绘图练习 //1.1 ...

qiao_lili的博客 1274

OpenCV计算机视觉基础教程(Python版)教学大纲.pdf

OpenCV计算机视觉基础教程(Python版)教学大纲.pdf

视觉SLAM十四讲第二版踩坑总结

关于视觉SLAM14讲第二版中遇到的安装与编译问题

slender_1031的博客 4450

OpenCV计算机视觉基础教程(Python版慕课版)课件PPT,一共包含10章

OpenCV计算机视觉基础教程(Python版)(慕课版)一共包含10章;目录如下; 第1章 环境搭建 第2章 图像处理基础 第3章 图像用户界面 第4章 图像处理基础算法 第5章 边缘和轮廓 第6章 直方图 第7章 模板匹配与图像分割 第8章 特征检测 第9章 人脸检测与识别 第10章 机器学习与深度学习

OpenCV计算机视觉基础教程(Python版)课件03图形用户界面.pdf

OpenCV计算机视觉基础教程(Python版)课件03图形用户界面.pdfOpenCV计算机视觉基础教程(Python版)课件03图形用户界面.pdfOpenCV计算机视觉基础教程(Python版)课件03图形用户界面.pdfOpenCV计算机视觉基础教程(Python版)课件03图形用户界面.pdfOpenCV计算机视觉基础教程(Python版)课件03图形用户界面.pdfOpenCV计算机视觉基础教程(Python版)课件03图形用户界面.pdf

【opencv课后练习】-- 第三章节5-8

题目5:学习使用感兴趣区域(ROI)。创建一个210*210的单通道图像并将其归0。在图中使用ROI和cvSet建立一个增长如金字塔状的数组,也就是:外部边界为0,下一个内部边界应该为20,在下一个内部边界为40,依此类推,直到最后内部值为200,所有边界应该为10个像素宽度。最后显示这个图形。#include &lt;cv.h&gt; #include &lt;highgui.h&gt; #in...

淡泊明志 宁静致远 393

OpenCV计算机视觉基础教程(Python版)教学教案.doc

教 案 "课 程 名 称 "计算机视觉基础 " "课 程 代 码 " " "系(部) " " "教研室(实验室) " " "授 课 教 师 " " "职 称 " " 年 月 "课 程 "计算机视觉基础 "总计: 44 学时 " "名 称 " " " "课 程 "专业课 "课程代码 " "讲授: 34 学时 " "类 别 " " " "实验: 10 学时 " " " " " "其他: 学时 " "授 课 " "学 分 " " " "教 师 " " " " " "授 课 " " "对 象 " " "教材和"教材:夏帮贵《OpenCV计算机视觉基础教程(Python版)(慕课版)" "主要参"》人民邮电出版社 2021.6 " "考资料"参考资料:李立宗《OpenCV轻松入门:面向Python》,电子工业出版 " " "社 2019.5 " "课 程 "计算机视觉是人工智能的一个重要研究领域,主要研究如何让计算 " "简 介 "机代替人眼实现对目标的分类、识别、跟踪和场景理解等内容。 " " "OpenCV是一个跨平台的开源计算机视觉库,最早由Intel发起并参与" " "开发。OpenCV

【opencv课后练习】-- 第四章节2-3

题目2:创建一个程序,使其读入并显示一幅图像。当用户鼠标点击图像时,获取图像对应像素的颜色值(RGB),并在图像上点击鼠标处用文本将颜色值显示出来。 a.对于练习1b,在三幅图像中任何地方点击鼠标,将当前图像的坐标显示于点击鼠标处。/* 创建一个程序,使其读入并显示一幅图像。当用户鼠标点击图像时,获取图像对应像素的颜色值(RGB),并在图像上点击鼠标处 用文本将颜色值显示出来。 a.对于练习1...

淡泊明志 宁静致远 257

OpenCV计算机视觉基础教程(Python版)试题及答案.doc

OpenCV计算机视觉基础教程(Python版)试题及答案 一、单项选择题(本大题共20小题,每小题1分,共20分) 1、OpenCV从( )版本开始使用Apache 2许可。 A、4.2.0 B、4.3.0 C、4.4.0 D、4.5.0 2、OpenCV提供机器学习功能的模块是( ) A、calib3d B、stitching C、ml D、dnn 3、OpenCV使用( )语言实现。 A、Java B、C/C++ C、Python D、JavaScript 4、下列选项中,可在NumPy中表示复数的数据类型是( )。 A、int B、single C、complex64 D、double 5、NumPy中可执行矩阵乘法的运算符是( ) A、* B、** C、/ D、@ 6、OpenCV用于读取图像文件的函数是( ) A、imread() B、imshow() C、imwrite() D、VideoCapture() 7、OpenCV用于绘制矩形的函数是( ) A、line() B、rectangle() C、ellipse() D、polylines() 8、在cvtColor(

Python3基础教程(第2版)(慕课版)-习题参考答案(1).docx

Python3基础教程(第2版)(慕课版)-习题参考答案(1)全文共2页,当前为第1页。Python3基础教程(第2版)(慕课版)-习题参考答案(1)全文共2页,当前为第1页。习题参考答案 Python3基础教程(第2版)(慕课版)-习题参考答案(1)全文共2页,当前为第1页。 Python3基础教程(第2版)(慕课版)-习题参考答案(1)全文共2页,当前为第1页。 第1章 一、单选选择题 1~5:ACDDD 二、编程题 见源代码 第2章 一、单选选择题 1~5:BBACA 二、编程题 见源代码 第3章 一、单选选择题 1~5:BBDBC 二、编程题 见源代码 第4章 一、单选选择题 1~5:ADCBC 二、编程题 见源代码 第5章 一、单选选择题 1~5:DBDCC 二、编程题 见源代码 第6章 一、单选选择题 1~5:DACBC 二、编程题 见源代码 第7章 一、单选选择题 1~5:DDAAD 二、编程题 见源代码 Python3基础教程(第2版)(慕课版)-习题参考答案(1)全文共2页,当前为第2页。Python3基础教程(第2版)(慕课版)-习题参考答案(1)全文共2页,当前为

【opencv课后练习】-- 第三章节2-4

题目2:创建一个三通道二维矩阵,字节类型,大小为100*100,并设置所有数值为0 。        a.在矩阵中使用void cvCircle(CvArr* img,CvPoint center,intradius,CvScalar color,int thickness = 1,int line_type = 8,int shift = 0)            b.使用第2章所学的方法来显...

淡泊明志 宁静致远 405

OpenCV计算机视觉基础教程(Python版)(慕课版)-(1).pptx

OpenCV计算机视觉基础教程 Python版 慕课版 主讲教师:*** OpenCV:Open Source Computer Vision Library OpenCV计算机视觉基础教程(Python版)(慕课版)-(1)全文共27页,当前为第1页。 第1章 本章主要内容: OpenCV简介 配置开发环境 使用OpenCV文档和示例 实验 OpenCV计算机视觉基础教程(Python版)(慕课版)-(1)全文共27页,当前为第2页。 1.1 OpenCV简介 本节主要内容: OpenCV主要功能及模块介绍 OpenCV的版本 OpenCV-Python OpenCV计算机视觉基础教程(Python版)(慕课版)-(1)全文共27页,当前为第3页。 1.1.1 OpenCV主要功能及模块介绍 1、内置数据结构和输入/输出 OpenCV内置了丰富的与图像处理有关的数据结构,如Image、Point、Rectangle等。 core模块实现了各种基本的数据结构。 imgcodecs模块提供了图像文件的读写功能,用户使用简单的命令即可读写图像文件。 2、图像处理操作 imgproc模块提供

【Java版本OpenCV】无敌OpenCV越学越爽Java版代码持续更新(环境搭建|核心代码)

Java版本OpenCV代码实战,springboot整合opencv,包括linux,windows下opencv环境搭建,章节代码演示

Java领域优秀创作者 7806

virtuoso根据原理图绘制版图并联接_virtuoso画原理图

Virtuoso Schematic Editor 电路仿真一、Virtuoso Schematic Editor 实验目的:掌握电原理图(schematic)设计输入方法。 [1]启动 IC Design 软件 启动 软件: 开机后运行......2.绘制原理图 新建工程后打开的是默认的原理图文件 SCHEMATIC1 PAG...存盘 完成原理图的绘制后,将原理图存盘. 三 . 用 Check...

weixin_33536190的博客 4144

实战指南:基于ELK与Grafana构建天融信防火墙日志可视化看板

本文详细介绍了如何基于ELK与Grafana构建天融信防火墙日志可视化看板,包括环境准备、日志收集与解析配置、Elasticsearch存储优化、Grafana看板设计等关键步骤。通过实战案例和优化技巧,帮助用户高效处理天融信防火墙日志,实现安全态势的可视化监控与分析。

weixin_34246529的博客 226

【亲测免费】 探索OpenCV的宝藏:OPENCV中文手册

探索OpenCV的宝藏:OPENCV中文手册 【下载地址】OPENCV中文手册下载 本仓库提供了一份名为“OPENCV中文手册”的资源文件下载。该手册详细介绍了OpenCV库的各个方面,涵盖了从基础结构到高级功能的全面内容。以下是手册的主要内容概述: ...

gitblog_06684的博客 767

ECharts 实现世界地图

效果图 源代码(仅供参考) <template> <div class="echarts"> <div class="className" id="id" style="width: 100%; height: 450px" ref="myEchart" ></div> </div> </template> <script lang="ts"> imp

EsquireY的博客 4874

精通 Python OpenCV4:第二部分

原文:Mastering OpenCV 4 with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,你最好真的没有;当别人说你做过某些事的时候,你也最好真的做过。 第 2 部分:OpenCV 中的图像处理 在本书的第二部分中,您将更深入地了解 OpenCV 库。 更具体地说,您将看到计算机视觉项目中所需的大多数常见图像处理技术。 此外,您还将看到如何创建和理解直方

龙哥盟 2719

FT2004(D2000)开发实战之网口stmmac报错调试(Failed to reset the dma)

网口stmmac报错调试(Failed to reset the dma)

嵌入式Linux 3584

AI工具 | 每个打工人必备的15款人工智能超级工具

不过,还是有一些靠谱的人工智能平台,它们可不只是营销噱头。有些AI公司正试图改变游戏规则。人工智能工具让人们能够更聪明地工作,而不是更辛苦地劳作。如果你想知道未来有什么,那就来看看这10款人工智能工具吧,它们将彻底改变我们的工作方式。

Vampire_2017的博客 5万+

OpenCV-Python教程

OpenCV-Python The Opencv-Python tutorial Chinese translation 这个库的建立目的在于翻译OpenCV-Python Tutorials,OpenCV-Python Tutorials是OpenCV官方的Python实现教程。 本人现 在读大二,也是刚刚开始学习OpenCV,刚刚开始时一直感觉无从下手,找到了官方文档之后发现内容非常...

Tony的博客 1万+

DB文件在编程中的作用及示例代码

通过使用DB文件,我们可以实现数据的持久化存储,并能够高效地进行数据的增删改查操作。在本文中,我们以SQLite数据库为例,演示了如何使用Python语言创建和操作DB文件的示例代码。在实际的编程中,我们可以根据具体的需求和使用的数据库系统来进行更复杂的操作和优化。通过使用DB文件,我们可以实现数据的持久化存储,确保数据在程序关闭后也能被保留,并且能够高效地进行数据检索和更新。在本文中,我们将探讨DB文件的作用,并提供一些示例代码展示如何在编程中使用DB文件。上述代码中,我们使用SQLite提供的。

CodeSpark的博客 1821

【OpenCV】第二章——图像处理基础

以上是图像处理的基础内容,涵盖了图像的读取、显示、基本属性、灰度化、二值化、色彩空间转换、图像变换与操作、图像滤波和平滑以及边缘检测等常用操作。

qq_42737210的博客 1489

Sigrity SPEED2000 General SI Simulation模式如何进行信号仿真分析操作指导-DDR

本例是几个简单的板载DDR颗粒的结构,本例中使用General SI Simulation模式仿真DDR信号,结构拓扑如下,Addcmd,clk,cke都是T拓扑。Sigrity SPEED2000 General SI Simulation模式可以对信号进行仿真分析,仿真将电源视为理想电源,以下图为例进行说明。DQS的接收端模型设置为DQS_34_ODT60_1333。模式如何进行信号仿真分析操作指导-DDR。附带驱动和接收端的IBIS模型。

weixin_54787054的博客 512

C#客户端对接工厂MES的方法

本文介绍了使用C#实现WebApi客户端与工厂MES系统交互的方法。主要包括四个步骤:1)配置工控机IP地址;2)获取服务器URL;3)创建HttpHelper帮助类实现单例模式HttpClient,提供异步POST请求方法;4)通过实例化帮助类实现设备状态数据的JSON格式发送与接收。该方案采用异步通信方式,支持超时处理,能够满足大多数MES系统交互需求,帮助工程师快速完成设备与MES系统的数据对接。文中给出了核心代码片段和完整的数据交互流程示例。

weixin_39832501的博客 264
上一篇: opencv开篇 --opencv-3.4.0 + VS2017 开发环境配置
下一篇: 【opencv课后练习】-- 第三章节2-4
Dynamic丶G
博客等级 码龄12年 3粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值