【opencv学习笔记】显示图像
2015-07-28 10:57
543 查看
了解opencv已有一段时间,可一直没静下心来系统学,现在正赶上暑假,想把之前的学习做个总结,同时进行更深入的学习。我用的是VS2010+opecv2.48版本,之前装的时候遇到问题已经总结出来,现在opencv3.0已经出来有一段时间了,和2.0系列也有很大的改动,等有空再进行总结。今天主要来说说入门级的一个小程序——显示图像,同时对之前一些疑惑的细节问题进行说明。我们最先开始接触的是这样的一段程序:
首先我们来说说
int main(int argc,char**argv)这个玩意(argc代表参数的个数,*argv[]为字符串数组,用来存放指向字符串参数的指针数组)。我们在初学的时候是不是常常看到不带参数的主函数main如下int main(),而官方给的demo中常常带有参数,这不得不从opencv的出身说起,我们都知道opencv都是用C/C++写的,而我们看到的带形参的main函数是UNIX、Linux以及Mac os等操作系统中C/C++的main函数的标准写法,也是主函数main血统最纯正的写法,但为了方便起见,往往弱化了argc和argv的用法,常常main函数也就不带参数。
再说说IplImage* ,这个玩意是opencv1.0时代的基于C语言接口而建立的图像的存储格式,如果在退出前没有release掉会造成内存泄露。自从opencv进入2.0时代就采用Mat类作为数据结构进行图像存储,这一改进使得opencv和MATLAB一样几乎可以零基础入门了,新版本增添了我们在MATLAB所熟知的imread、imshow和imwrite等函数,这样的话我们在读取图像时不用那么麻烦,可以用Mat img = imread("lean.jpg")替代。 对于cvReleaseImage和
cvDestroyWindow销毁显示图像文件窗口,同时释放为该窗口所分配的内存。对于一些小的程序,我们可以不必调用cvDestroyWindow()或cvReleaseImage,但养成习惯释放内存资源总是好的。 综上我们现在可以摆脱1.0时代了,可以选择比较方便的程序,如下:
#include "highgui.h" int main(int argc,char**argv) { IplImage* img = cvLoadImage(argv[1]); cvNamewindow("lean",CV_WINDOW_AUTOSIZE); //CV_WINDOW_AUTOSIZE自适应窗口大小 cvShowImage("lean",img); cvWaitKey(0); //cvWaitKey中参数大于0 表示显示多少ms窗口自动关闭,小于或者等于0表示等待用户按键操作 cvReleaseImage(&img); cvDestroyWindow("lean"); }
首先我们来说说
int main(int argc,char**argv)这个玩意(argc代表参数的个数,*argv[]为字符串数组,用来存放指向字符串参数的指针数组)。我们在初学的时候是不是常常看到不带参数的主函数main如下int main(),而官方给的demo中常常带有参数,这不得不从opencv的出身说起,我们都知道opencv都是用C/C++写的,而我们看到的带形参的main函数是UNIX、Linux以及Mac os等操作系统中C/C++的main函数的标准写法,也是主函数main血统最纯正的写法,但为了方便起见,往往弱化了argc和argv的用法,常常main函数也就不带参数。
再说说IplImage* ,这个玩意是opencv1.0时代的基于C语言接口而建立的图像的存储格式,如果在退出前没有release掉会造成内存泄露。自从opencv进入2.0时代就采用Mat类作为数据结构进行图像存储,这一改进使得opencv和MATLAB一样几乎可以零基础入门了,新版本增添了我们在MATLAB所熟知的imread、imshow和imwrite等函数,这样的话我们在读取图像时不用那么麻烦,可以用Mat img = imread("lean.jpg")替代。 对于cvReleaseImage和
cvDestroyWindow销毁显示图像文件窗口,同时释放为该窗口所分配的内存。对于一些小的程序,我们可以不必调用cvDestroyWindow()或cvReleaseImage,但养成习惯释放内存资源总是好的。 综上我们现在可以摆脱1.0时代了,可以选择比较方便的程序,如下:
# include<opencv2/opencv.hpp> using namespace cv; int main() { Mat img = imread("lean.jpg"); imshow("lean",img); cvWaitkey(0); }
相关文章推荐
- udev检测热插拔
- Centos下mysql数据库备份与恢复的方法
- Nginx 日志
- Tomcat部署web应用程序
- Apache Shiro 使用手册(五)Shiro 配置说明
- Apache Shiro 使用手册(四)Realm 实现
- linux shell 逐行读取文件行
- Zero-copy(NIO)
- Apache Shiro 使用手册(三)Shiro 授权
- 各种浏览器(IE,Firefox,Chrome,Opera)COOKIE修改方法[转]
- Apache Shiro 使用手册(二)Shiro 认证
- 合并 CentOS 6.5 的两个 DVD 作为本地 YUM 源
- Docker之三仓库
- Linux常用命令之管道/wc
- linux iio子系统
- linux 修改文件内容 vi命令
- Apache Shiro 使用手册(一)Shiro架构介绍
- Linux内核抢占实现机制分析
- openflow详解
- 采用ovs-docker为容器创建双外部网络