根据滚动条位置缩放图像(学习OpenCV课后题 2.5)
来源:互联网 发布:什么软件可以听韩文歌 编辑:程序博客网 时间:2024/06/08 07:12
// 第二章 课后练习题
// 题号:2.5
// 功能:读取摄像头中的数据,并为显示图像的窗口中添加一个Slider
// 根据Slider的位置,等比缩放视频显示窗口中显示图像的大小
#include "cv.h"
#include "highgui.h"
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cvcam.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")
IplImage *doPyrDown(IplImage *input,int filter=CV_GAUSSIAN_5x5); //doPyrDown函数声明
void MyTrackbarCallback(int pos); //slider的回调函数的声明
int decrease; //根据slider的当前位置,确定缩放比例
void main()
{
//创建一个从摄像头中获取图像的capture指针
CvCapture *capture=cvCreateCameraCapture(0);
assert(capture!=NULL);
//从capture中获取图像
IplImage *image=cvQueryFrame(capture);
assert(image!=NULL);
//获得图像的总帧数,该参数在此处没有使用,可注释掉,因为从摄像头获取的帧数为0
int frames=(int)cvGetCaptureProperty(capture,CV_CAP_PROP_POS_FRAMES);
//创建图像显示窗口
cvNamedWindow("Show",CV_WINDOW_AUTOSIZE);
//创建TrackBar
cvCreateTrackbar("Scalar","Show",&decrease,8,MyTrackbarCallback);
//当从摄像头中获取图像成功后,进入循环
while ((image=cvQueryFrame(capture))!=NULL)
{
if (0==decrease || 1==decrease)
{
cvShowImage("Show",image);
}
else
{
//如果缩放比例大于等于2,先将图像缩放一次,使convert_image指向缩放后的图像
IplImage *convert_image;
convert_image=doPyrDown(image);
//如果缩放比例大于2进入循环进行第二次等比缩小
for (int i=2;i<decrease;i++)
{
convert_image=doPyrDown(convert_image);
}
//翻转图像以正常显示
cvConvertImage(convert_image,convert_image,CV_CVTIMG_FLIP);
cvShowImage("Show",convert_image);
}
cvWaitKey(30);
}
//释放资源
cvReleaseCapture(&capture);
cvDestroyWindow("Show");
}
/*******************************************************************/
/* 函数名 : doPyrDown() 执行图形的向下图像金字塔
/* 参数 : input 输入图像
/* filter cvPyrDown()的默认参数
/* 功能 : 将输入图像input缩小一倍,并返回指向经过缩小处理图像的指针
/*******************************************************************/
IplImage *doPyrDown(IplImage *input,int filter)
{
//确保图像宽度和高度能被2整除
assert(input->width%2==0 && input->height%2==0);
IplImage *output=cvCreateImage(cvSize(input->width/2,input->height/2),
input->depth,
input->nChannels);
assert(output!=NULL);
//对图像进行缩放处理
cvPyrDown(input,output,CV_GAUSSIAN_5x5);
return(output);
}
/***************************************************************
/*函数名:MyTrackbarCallback() 所属窗口中指定slider的回调函数
/* 参数:pos 所传入的当前slider的位置
/* 功能:记录当前slider的pos位置,并将其存入g_trackbar_postion返回
/****************************************************************/
void MyTrackbarCallback(int pos)
{
decrease=pos; //获取缩放比例
}
- 根据滚动条位置缩放图像(学习OpenCV课后题 2.5)
- 学习OpenCV 第四章课后题第一题(合并图像、缩放、字体)
- OpenCV学习笔记07--用滚动条控制图片缩放
- opencv 图像叠加滚动条
- 根据滚动条位置动态加载内容。。
- opencv 2.x学习笔记(八)滚动条、混合图像
- opencv 利用滚动条调整图像亮度
- Opencv多通道图像混合-滚动条
- Opencv图像非线滤波-滚动条
- Opencv图像线性滤波-滚动条
- OpenCV图像窗口滚动条实现
- OpenCV学习笔记(6)图像的缩放
- opencv 加滚动条进行图片缩放 入门级
- OpenCV学习(六)之图像缩放变换
- 【OpenCV学习笔记】2.2图像的缩放
- OpenCV学习——图像的缩放
- 网页刷新 页面位置不变(根据滚动条)
- jQuery根据滚动条位置加载相应的内容
- 再论iPhone Push Notification
- 读取摄像头数据(学习openCV课后题 2.4)
- MapX 创建新的永久图层。
- 用hibernate查找出list里的object[]并在页面用struts2显示
- 如何修改STM32的USB例程为自己所用(转)
- 根据滚动条位置缩放图像(学习OpenCV课后题 2.5)
- 经典语句
- 把磁盘阵列挂到linux 系统上来
- 改变图像的部分通道值(图像指针操作)
- 惠普前总裁孙振耀指点职业规划
- 图像的ROI操作
- SharePoint 2010相关版本说明
- 电力系统分析大纲
- 学习OpenCV课后题3.1