版权声明:本文为 @iCurious
的原创文章,可以转载,但请务必注明作者和出处!!!
原文链接:|blog.csdn.net/icurious|www.blankspace.cn|www.cnblogs.com/icurious/|
摘要
本文的主要内容为,参考@morewindows的文章:
- 测试旧版本OpenCV的
cvResize
、cvCreateImage
函数的使用,来对打开的图像进行简单缩放。 - 使用
cvThreshold
函数对打开的图像进行二值化处理。 - 给窗口添加工具条,并使用回调机制,拖动滑动条使得图像效果跟随变化。
内容
cvResize
- 函数功能:图像大小变换
- 函数原型:
void cvResize(const CvArr* src,CvArr* dst,intinterpolation=CV_INTER_LINEAR); - 函数说明:
第一个参数表示输入图像。
第二个参数表示输出图像。
第三个参数表示插值方法,可以有以下四种:
CV_INTER_NN - 最近邻插值,
CV_INTER_LINEAR - 双线性插值 (缺省使用)
CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法..
CV_INTER_CUBIC - 立方插值.
这个函数在功能上与Win32 API中的StretchBlt()函数类似。
cvCreateImage
- 函数功能:创建图像
- 函数原型:
IplImage* cvCreateImage(CvSize size, intdepth, intchannels); - 函数说明:
第一个参数表示图像的大小。
第二个参数表示图像的深度,可以为IPL_DEPTH_8U,IPL_DEPTH_16U等等。
第三个参数表示图像的通道数。
示例
//缩放图像文件
//2016/4/15
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
//隐藏控制台窗口
#pragma comment (linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
//主函数
int main()
{
const char * pstrImageName = "2.jpg"; //原图片的名称
const char * pstrSaveImageName = "缩略图(保存).jpg";//缩略图保存名称
const char * pstrWindowsSrcTitle = "原图.jpg"; //原图显示窗口标题
const char * pstrWindowsDetTitle = "缩放图.jpg"; //缩略图窗口标题
double dScale = 0.5;//缩放倍数
CvSize czSize;//CvSize结构体
//从文件中读取图片
IplImage* pSrcImage = cvLoadImage(pstrImageName, 1);//load picture from file
IplImage* pDstImage = NULL ;//翻转图片指针
//计算缩放后图像的大小
czSize.height = pSrcImage->height*dScale;
czSize.width = pSrcImage->width*dScale;
//创建图像
pDstImage = cvCreateImage(czSize, pSrcImage->depth, pSrcImage->nChannels);
//缩放图像
cvResize(pSrcImage, pDstImage, CV_INTER_AREA);
//创建窗口
cvNamedWindow(pstrWindowsSrcTitle);
cvNamedWindow(pstrWindowsDetTitle);
//在制定窗口显示图片
cvShowImage(pstrWindowsSrcTitle, pSrcImage);
cvShowImage(pstrWindowsDetTitle, pDstImage);
//等待按键
cvWaitKey();
//保存图片
cvSaveImage(pstrSaveImageName, pDstImage);
//关闭窗口
cvDestroyWindow(pstrWindowsSrcTitle);
cvDestroyWindow(pstrWindowsDetTitle);
cvReleaseImage(&pSrcImage);
cvReleaseImage(&pDstImage);
return 0;
}
效果
版权声明:本文为 @iCurious
的原创文章,可以转载,但请务必注明作者和出处!!!
原文链接:|blog.csdn.net/icurious|www.blankspace.cn|www.cnblogs.com/icurious/|