vc2010+openCV1.0实现将指定目录下的所有jpg文件缩放后存放到目标文件夹

开发环境:winXP + vc2010 + OpenCV1.0

OpenCV1.0安装目录: D:\opensource\opencv1.0

源代码:

/*功能:将指定目录下的所有JPG文件进行缩放后存放到目标文件夹开发环境: winXP + vc2010 + openCV1.0头文件路径:D:\opensource\opencv1.0\cv\includeD:\opensource\opencv1.0\cxcore\includeD:\opensource\opencv1.0\otherlibs\highguilib文件目录:D:\opensource\opencv1.0\lib用到的lib文件: cxcore.lib cv.lib highgui.lib*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <io.h>
#include <direct.h>
#include <vector>
#include <cv.h>
#include <highgui.h>using namespace std;void checkDir(const char *dir)
{if(_access(dir, 0) == -1){_mkdir(dir);}
}// 获取指定目录下所有jpg文件列表
bool getImageFileList(const char *srcDir, vector<string> &fileList)
{_finddata_t fileDir;long lfDir;char f[100] = {0};sprintf(f, "%s\\*.JPG", srcDir);if((lfDir = _findfirst(f, &fileDir)) != -1L){do{fileList.push_back(fileDir.name);}while(_findnext(lfDir, &fileDir) == 0 );_findclose(lfDir);return true;}return false;
}/*功能:将源图像文件另存为目标文件,按scale比例缩放
*/
bool stretchImage(const char *srcImg, const char *destImg, double scale)
{IplImage *src = NULL, *dst = NULL;CvSize dst_cvsize;			//目标图像尺寸src = cvLoadImage(srcImg, CV_LOAD_IMAGE_UNCHANGED);if(!src){printf("Load source image[%s] failed, please check!\n", srcImg);return false;}dst_cvsize.width = (int)(src->width * scale);dst_cvsize.height = (int)(src->height * scale);	dst = cvCreateImage( dst_cvsize, src->depth, src->nChannels);	//构造目标图象
//	cvResize(src, dst, CV_INTER_LINEAR);	//缩放源图像到目标图像cvResize(src, dst, CV_INTER_CUBIC);		//缩放源图像到目标图像cvSaveImage(destImg, dst);cvReleaseImage(&src);cvReleaseImage(&dst);return true;
}/*功能:将源图像文件另存为目标文件,目标图像文件大小为destSize
*/
bool stretchImage(const char *srcImg, const char *destImg, const CvSize destSize)
{IplImage *src = NULL, *dst = NULL;src = cvLoadImage(srcImg, CV_LOAD_IMAGE_UNCHANGED);if(!src){printf("Load source image[%s] failed, please check!\n", srcImg);return false;}dst = cvCreateImage( destSize, src->depth, src->nChannels);	//构造目标图象
//	cvResize(src, dst, CV_INTER_LINEAR);		//缩放源图像到目标图像cvResize(src, dst, CV_INTER_CUBIC);			//缩放源图像到目标图像cvSaveImage(destImg, dst);cvReleaseImage(&src);cvReleaseImage(&dst);return true;
}// 将指定目录下的*.JPG文件压缩后,存放到目标文件夹
bool stretchImages(const char *srcDir, const char *destDir)
{vector<string> fileList;getImageFileList(srcDir, fileList);if(fileList.size() > 0){const double scale = 0.25;char srcFile[255], destFile[255];checkDir(destDir);for(vector<string>::iterator it = fileList.begin(); it != fileList.end(); it++){sprintf(srcFile, "%s\\%s", srcDir, it->c_str());sprintf(destFile, "%s\\%s", destDir, it->c_str());printf("Stretch Image [%s] -> [%s]\n", srcFile, destFile);stretchImage(srcFile, destFile, scale);}return true;}else{puts("There is no image can be stretched.");return false;}
}int main(int argc, char* argv[])
{if(argc < 3){printf("Usage: %s <srcDir> <destDir>\n", argv[0]);return -1;}const char *srcDir = argv[1];const char *destDir = argv[2];printf("srcDir=[%s], destDir=[%s]\n", srcDir, destDir);stretchImages(srcDir, destDir);return 0;
}/*注:以上的代码除了用到一个c++的vector<string>,其他的都是C的东西,所以要改成纯C的也应该不难!
*/



运行结果:

D:\program\vc2010\cv1>cv1 .
Usage: cv1 <srcDir> <destDir>D:\program\vc2010\cv1>cv1 D:\profile\Desktop\sp D:\profile\Desktop\sp\out
srcDir=[D:\profile\Desktop\sp], destDir=[D:\profile\Desktop\sp\out]
Stretch Image [D:\profile\Desktop\sp\IMG_0335.JPG] -> [D:\profile\Desktop\sp\out\IMG_0335.JPG]
Stretch Image [D:\profile\Desktop\sp\IMG_0336.JPG] -> [D:\profile\Desktop\sp\out\IMG_0336.JPG]
Stretch Image [D:\profile\Desktop\sp\IMG_0337.JPG] -> [D:\profile\Desktop\sp\out\IMG_0337.JPG]


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

功能:人脉(People Hub)7-固定到“开始”屏幕

如果是您的亲人和密友&#xff0c;再或者是领导和重要客户。 您需要经常沟通&#xff0c;可以将他的联系人头像固定在开始屏幕上&#xff0c;方便您的沟通。方法&#xff1a;很简单&#xff0c;“长按该联系人”后&#xff0c;有菜单出现&#xff0c;选择弹出菜单中的“固定到‘…

[react] react中的setState缺点是什么呢?

[react] react中的setState缺点是什么呢&#xff1f; 调用时机不恰当的话可能引起循环调用的问题&#xff1a;比如在componentWillUpdate render componentDidUpdate调用都有可能引起这种问题setState可能会引用不必要的re-render&#xff1a;setState任何值都会引起组件的ren…

一个系统中同时使用VC6.0+OpenCV1.0和VS2010+OpenCV2.4.6.0的方法

From: http://blog.csdn.net/zzy7222872/article/details/6047446 以前用的是VC6.0OpenCV1.0的组合&#xff0c;一直用的很好。一般的图像处理算法都可以实现&#xff0c;现在突然想搞一下立体视觉方面的东西&#xff0c;查看了OpenCV的手册&#xff0c;发现立体视觉上的大部…

[react] 请说说什么是useEffect?

[react] 请说说什么是useEffect&#xff1f; useEffect是副作用函数&#xff0c;第一个参数是函数&#xff0c;第二个参数是依赖的数据数组&#xff0c;当依赖数组中的数据变化时&#xff0c;触发第一个参数函数的执行。有以下的几种使用方式 模拟componentDidMount&#xff…

《OEA - 实体扩展属性系统 - 设计方案说明书》

这篇设计文档是 12 月份写来参加公司的研发峰会的&#xff0c;自己倒是信心满满&#xff0c;不过最后还是没有入围。现在想想也没啥大用&#xff0c;所以贴出来&#xff0c;期待与园友交流。 文档有点长&#xff0c;没全部贴在博客中&#xff0c;有兴趣的可以下载附件中的 PDF。…

Python与C/C++ 模块相互调用

From: http://hi.baidu.com/jintuguo/item/45639b4e7cda3c9f833ae1bb Python调用C动态链接库 Python调用C库很简单,不经过任何封装打包成so,再使用python的ctypes调用即可。 <test.cpp 生成动态库的源文件> #include <stdio.h> extern "C" { void…

[react] 在构造函数中调用super(props)的目的是什么?

[react] 在构造函数中调用super(props)的目的是什么&#xff1f; 这是ES6的语法。class组件继承自React.Component&#xff0c;super(props)之后&#xff0c;有以下几个作用&#xff1a; 初始化props&#xff0c;虽然不进行super(props)操作&#xff0c;组件在实例化时react也…

coverage.py - python 单元测试覆盖率统计工具

前提&#xff1a;1.假定已经安装好coverage.py&#xff08;ubuntu 10.10python.2.7coverage3.5.1&#xff09;2.项目里有模块do.py以及测试它的单元测试模块doTEST.py命令行&#xff1a;$ cd /home/user1/workspace/hp1$ coverage run doTEST.py$ coverage report$ coverage ht…

[react] 为什么建议setState的第一个参数是callback而不是一个对象呢?

[react] 为什么建议setState的第一个参数是callback而不是一个对象呢&#xff1f; React 为了优化性能&#xff0c;有可能会将多个 setState() 调用合并为一次更新。 因为this.props和this.state 可能是异步更新的&#xff0c;你不能依赖他们的值计算下一个state(状态)。以下面…

Python Ctypes结构体指针处理(函数参数,函数返回)

参考网址: http://www.2cto.com/kf/201109/106444.html 本文演示了在python中调用C语言生成的动态库&#xff0c;返回结构体指针&#xff0c;并进行输出&#xff01; test.c(动态库源代码) // 编译生成动态库: gcc -g -fPIC -shared -o libtest.so test.c#include <stdio.h…

[react] react的状态提升是什么?使用场景有哪些

[react] react的状态提升是什么&#xff1f;使用场景有哪些 React的状态提升就是用户对子组件操作&#xff0c;子组件不改变自己的状态&#xff0c;通过自己的props把这个操作改变的数据传递给父组件&#xff0c;改变父组件的状态&#xff0c;从而改变受父组件控制的所有子组件…

exit和return区别

From: http://blog.163.com/liuqiang_mail126/blog/static/109968875201241210473787/ 退出和返回 退出状态(exit status) 函数返回一个被称为退出状态的值. 退出状态可以由return 来指定statement, 否则函数的 退出状态是函数最后一个执行命令的退出状态(0 表示成功,非0 表示…

[react] react中什么是受控组件?

[react] react中什么是受控组件&#xff1f; 表单元素的value/checked值与state绑定&#xff0c;同时表单元素的onChange可以动态的改变对应的state的值&#xff0c;即数据的变更可以更新视图&#xff0c;用户操作视图的更新也可以触发state数据的更新. import React from re…

SQL Server--用户自定义函数

除了使用系统提供的函数外&#xff0c;用户还可以根据需要自定义函数。用户自定义函数是 SQL Server 2000 新增的数据库对象&#xff0c;是 SQL Server 的一大改进。与编程语言中的函数类似&#xff0c;Microsoft SQL Server 用户定义函数是接受参数、执行操作&#xff08;例如…

c语言exit和return区别,在fork和vfork中使用

From: http://www.cnblogs.com/laojie4321/archive/2012/03/31/2426910.html exit函数在头文件stdlib.h中。 exit&#xff08;0&#xff09;&#xff1a;正常运行程序并退出程序&#xff1b; exit&#xff08;1&#xff09;&#xff1a;非正常运行导致退出程序&#xff1b;…

[react] 说说你对“在react中,一切都是组件”的理解

[react] 说说你对“在react中&#xff0c;一切都是组件”的理解 React采用组件化的思想&#xff0c;最小的组件单位就是原生HTML元素&#xff0c;采用JSX的语法声明组件的调用React的虚拟DOM&#xff0c;就是一个大的组件树&#xff0c;从父组件层到子组件&#xff0c;在rende…

DWT算法

C写的DWT算法转载于:https://blog.51cto.com/yerik/764890

gcc 编译选项

From: http://blog.csdn.net/guogeer/article/details/7407508 [html] view plaincopy下列选项控制编译器警告信息: --all-warnings 此开关缺少可用文档 --extra-warnings 此开关缺少可用文档 -W 不建议使用此开关…

[react] react中的key有什么作用?

[react] react中的key有什么作用&#xff1f; react利用key来识别组件&#xff0c;它是一种身份标识标识&#xff0c;就像我们的身份证用来辨识一个人一样。每个key对应一个组件&#xff0c;相同的key react认为是同一个组件&#xff0c;这样后续相同的key对应组件都不会被创建…

【转】ps命令详解

原文地址&#xff1a;http://apps.hi.baidu.com/share/detail/32573968 有 时候系统管理员可能只关心现在系统中运行着哪些程序&#xff0c;而不想知道有哪些进程在运行。由于一个应用程序可能需要启动多个进程。所以在同等情况下&#xff0c;进程的数 量要比程序多的多。为此从…