《学习OpenCV》练习题第四章第三题a
- #include <highgui.h>
- #include <cv.h>
- #include "opencv_libs.h"
- #pragma comment (lib,"opencv_calib3d231d.lib")
- #pragma comment (lib,"opencv_contrib231d.lib")
- #pragma comment (lib,"opencv_core231d.lib")
- #pragma comment (lib,"opencv_features2d231d.lib")
- #pragma comment (lib,"opencv_flann231d.lib")
- #pragma comment (lib,"opencv_gpu231d.lib")
- #pragma comment (lib,"opencv_haartraining_engined.lib")
- #pragma comment (lib,"opencv_highgui231d.lib")
- #pragma comment (lib,"opencv_imgproc231d.lib")
- #pragma comment (lib,"opencv_legacy231d.lib")
- #pragma comment (lib,"opencv_ml231d.lib")
- #pragma comment (lib,"opencv_objdetect231d.lib")
- #pragma comment (lib,"opencv_ts231d.lib")
- #pragma comment (lib,"opencv_video231d.lib")
- /*
- *《学习OpenCV》第四章第三题a
- * 完成时间:22:17 3/30 星期六 2013
- */
- /* 矩形框 */
- CvRect rect;
- bool draw = false; // 标记是否在画
- IplImage* img;
- IplImage * temp;
- IplImage * original;
- void draw_rect(IplImage* img, CvRect rect)
- {
- cvRectangle( img,
- cvPoint( rect.x, rect.y ),
- cvPoint( rect.x + rect.width, rect.y + rect.height),
- cvScalar( 0x00, 0x00, 0xff) );
- printf("draw\n");
- }
- // 鼠标回调函数
- void my_mouse_callback( int event, int x, int y, int flags, void* param)
- {
- IplImage* image = (IplImage*) param;
- switch( event )
- {
- case CV_EVENT_MOUSEMOVE:
- {
- if(draw)
- {
- rect.width = x - rect.x;
- rect.height = y - rect.y;
- }
- }
- break;
- case CV_EVENT_LBUTTONDOWN:
- {
- draw = true;
- rect = cvRect( x, y, , );
- }
- break;
- case CV_EVENT_LBUTTONUP:
- {
- draw = false;
- if(rect.width < )
- {
- rect.x += rect.width;
- rect.width *= -;
- }
- if(rect.height < )
- {
- rect.y += rect.height;
- rect.height *= -;
- }
- // draw
- draw_rect(image, rect);
- }
- break;
- // 在右键按下时清除
- case CV_EVENT_RBUTTONDOWN:
- cvCopyImage(original, img);
- printf("clear.\n");
- break;
- }
- }
- int main()
- {
- img = cvLoadImage( "lena.bmp", );
- rect = cvRect( -, -, , );
- // 副本
- temp = cvCloneImage( img );
- original = cvCloneImage(img);
- cvNamedWindow("draw rect");
- cvSetMouseCallback("draw rect", my_mouse_callback, (void*)img);
- while()
- {
- cvCopyImage(img, temp);
- if(draw)
- {
- draw_rect( temp , rect );
- }
- cvShowImage( "draw rect", temp);
- if(cvWaitKey() == )
- break;
- }
- cvReleaseImage(&img);
- cvReleaseImage(&temp);
- cvReleaseImage(&original);
- cvDestroyAllWindows();
- return ;
- }
运行结果:
《学习OpenCV》练习题第四章第三题a的更多相关文章
- 《学习OpenCV》练习题第四章第三题b
#include <highgui.h> #include <cv.h> #include "opencv_libs.h" /* *<学习OpenCV ...
- 《学习OpenCV》练习题第四章第八题ab
这道题是利用OpenCV例子程序里自带的人脸检测程序,做点图像的复制操作以及alpha融合. 说明:人脸检测的程序我参照了网上现有的例子程序,没有用我用的OpenCV版本(2.4.5)的facedet ...
- 《学习OpenCV》练习题第四章第七题abc
题外话:一直是打算把这本书的全部课后编程题写完的,中间断了几个月,一直忙于其他事.现在开始补上. 这道题我不清楚我理解的题意是不是正确的,这道题可以练习用OpenCV实现透视变换(可以用于矫正在3维环 ...
- OpenCV实现的高斯滤波探究_1(《学习OpenCV》练习题第五章第三题ab部分)
首先看下OpenCV 官方文档对于cvSmooth各个参数的解释: Smooths the image in one of several ways. C: void cvSmooth(const C ...
- 《学习OpenCV》 第四章 习题六
实现的是一个图像标签编辑器,其间遇到了些问题还未解决或者可能解决方法上不是最优,若你有更好的思路可以提供给我,大恩不言谢啦!!☆⌒(*^-゜)v. #include "stdafx.h&qu ...
- 《学习OpenCV》练习题第四章第一题b&c
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
- 《学习OpenCV》练习题第四章第二题
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
- 《学习OpenCV》练习题第四章第一题a
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
- 学习opencv中文版教程——第二章
学习opencv中文版教程——第二章 所有案例,跑起来~~~然而并没有都跑起来...我只把我能跑的都尽量跑了,毕竟看书还是很生硬,能运行能出结果,才比较好. 越着急,心越慌,越是着急,越要慢,越是陌生 ...
随机推荐
- 5.cadence原理图上[原创]
一.库管理 1.打开原理图,,按键盘P键 在目标库下可以直接收索需要的元件,则可直接找到 在原理图中放置器件时,结束放置快捷键:Esc 双击后,可自动将该元件对应的库添加到你的库中,该方法找元件效果好 ...
- armeabi,armeabi-v7a ,x86 和mips 都是什么?
首先要明白ABI的概念: ABI(Application Binary Interface)实际就是指应用程序基于哪种指令集来进行编译,我们能用到的ABI 也就四种 armeabi,armeabi ...
- DbProviderFactories.GetFactoryClasses
using System.Data.Common; private void Method1() { DataTable table = DbProviderFactories.GetFactoryC ...
- openfire源码分析
启动流程 Socket接口 Socket通信使用Mina框架实现,是XMPP协议的处理入口,具体为: 消息接收后由不同的节处理器处理: StanzaHandler基础消息类型,之后进行消息路由: 最后 ...
- Debian 如何更改hdmi接口输出的分辨率
1. 先删除无用的文件: a) Boot/boot.src b) Boot/script.bin 2. 打开boot/script.fex,找到disp_init节点 a) 将screenX_outp ...
- HDU 2084 数塔
没什么好说的,这是我学DP的第一道题目. //#define LOCAL #include <iostream> #include <cstdio> #include < ...
- bzoj2982: combination
借(cao)鉴(xi)自popoqqq大爷的lucas定理的写法 #include<cstdio> #include<cstring> #include<cctype&g ...
- jquery中html()/text()/val()区别
html就是你可以添加<span></span><li></li>的标记text只能写文本如果写了上面的标记则会以文本形式输出,就是输出标签体的内容va ...
- 扩容盘、SD卡扩容
内存卡的前世今生回想当年,大家都还在用着非智能机,由于功能单一,需要存储的数据也就是通讯录和短信.虽然那时也有手机游戏,但大多都是几十KB,并不需要太大的存储空间.但随着手机功能的多样化,尤其是音乐. ...
- Task和BackTask
一.总结性知识点: 1.Android应用运行时会创建任务Task,用于存放主窗口 2.每一个任务包含一个堆栈数据结构,用于保存当前应用已创建的窗口对象,这个堆栈即回退栈BackSta ...