标签:
OpenCV其实就是一堆用C和C++语言来实现计算机视觉算法的源代码文件;例如C接口函数cvCany()实现了Canny边缘提取算法,我们可以直接将这些源代码添加到自己的软件项目中,而不需要自己去写代码实现Canny算法。同时由于源文件居多,所以根据算法的功能将源文件分到多个模块中(如下),将每个模块中的源文件编译成一个库文件(如opencv_core.lib、opencv_highgui.lib),用户调用时仅将所需的库文件添加到自己的项目中,与自己的源文件一起连接成可执行程序即可。
1、CV图像处理和视觉算法
2、MLL统计分类器
3、HighGUI图像和视频输入/输出
4、CXCORE(基本结构和算法,XML支持,绘图函数)
5、CvAux(存放即将被淘汰的算法和函数,新出现的实验性算法和函数)
(CVCAM摄像机接口属于OpenCV1.0版内容,在以后的版本中被弃用)
c/c++语言中的main函数,经常带有参数argc,argv,如下:
int main(int argc,char** argv)或者int main(int argc,char* argv[])
*1、argc:命令行输入参数个数,以空白符分隔
*2、argv:中存储了命令行参数
*3、如下图在dos命令下进入到openpictures.exe文件所在目录下运行命令:openpictures.exe lena.jpg lena2.jpg
那么有:argc=3,argv[0] = openpictures.exe,argv[1] = lena.jpg,argv[2] = lena2.jpg。
输入openpictures.exe lena.jpg命令符后,执行:显示lena.jpg图片的功能
输入openpictures.exe lena.jpg lena2.jpg命令符后,执行:显示lena.jpg图像、并将其写入lena2.jpg文件
(你会发现在lena.jpg所在文件目录下多出来一个lena2.jpg文件并且跟lena.jpg图片信息一样)
IPL_DEPTH_8U:无符号8bit整型
IPL_DEPTH_8S:无符号8bit整型
IPL_DEPTH_16U:无符号16bit整型
IPL_DEPTH_16S:有符号16bit整型
IPL_DEPTH_32S:有符号32bit整型
IPL_DEPTH_32F:单精度浮点数
IPL_DEPTH_64F:双精度浮点数
#include "stdafx.h" #include "highgui.h" int main(int argc, char** argv) { IplImage* pImg; //声明IplImage指针 if(argc == 2 && (pImg = cvLoadImage(argv[1],1)) != 0) //当(“输入两个字符串”并且“成功读入图片”)时 { cvNamedWindow("Image",1); //创建标题为Image的窗口,并且随实际图片大小改变窗口尺寸 cvShowImage("Image",pImg); //在Image窗口内显示pImg指针所指图像 cvWaitKey(); //等待按键 cvDestroyWindow("Image"); //销毁窗口 cvReleaseImage(&pImg); //释放图像 return 0; } else if(argc == 3 && (pImg = cvLoadImage(argv[1],1)) != 0) //当(“输入三个字符串”并且“成功读入图片”)时 { IplImage* pImg2 = cvCreateImage(cvGetSize(pImg),pImg->depth,pImg->nChannels); //以图像pImg的格式创建图像pImg2 cvCopy(pImg,pImg2,NULL); //复制pImg图像数据到pImg2 cvSaveImage(argv[2],pImg2); //把图像pImg2写入以输入第三个字符串为名字的文件中 cvNamedWindow("Image",1); //创建窗口 cvShowImage("Image",pImg); //显示图像 cvWaitKey(0); //等待按键 cvDestroyWindow("Image"); //销毁窗口 cvReleaseImage(&pImg); //释放图像 return 0 ; } return -1; }
标签:
原文地址:http://www.cnblogs.com/Fireburning-tec/p/5126045.html