opencv中c/c++风格函数使用说明
来源:互联网 发布:mastercam曲面编程 编辑:程序博客网 时间:2024/06/05 14:53
1. 显示窗口大小的改变方法不同。
在c版本中,定义一个窗口时用cvNamedWindow.
比如说cvNamedWindow(“src”,0);后面的参数为0表示窗口大小可以手动改变,否则窗口的大小是自适应图片大小的。
而在c++版本中定义一个窗口用namedWindow.
比如说namedWindow(“src”,1);不管后面第二个参数是多少,都不能手动更改窗口的大小,因为它的尺寸是根据图片大小自动生成的。
并且要看到手动调整窗口大小的效果,还需要配合cvShowImage(“src”,img);
也就是说如果后面显示用c++版本的imshow(“src”,img);也是看不到手动调整图片大小的效果的。
2. 显示图片的函数不同。
在opencv的c版本中,显示图片用cvShowImage;
比如说,cvShowImage(“src”,img);
并且这里的img是IplImage*类型,所以如果你定义的img是Mat类型的话就用不了,因为程序不能自动将Mat类型转换成IplImage*类型。
在opencv的c++版本中,显示图片用的是imshow;
比如说,imshow(“src”,img);
当然这里的img就是Mat类型了。也就是说如果这里的img用IplImage*就不行了,程序不能自动将IplImage*转换成Mat类型。
通过上面2点应该注意到,如果要手动改变图片的尺寸,就必须cvNamedWidow(“src”,0);
cvShowImage(“src”,img)一起用。其中img是IplImage*类型。
当然cvNamedWindow(“src”,0)也可以和imshow(“src”,img)一起用,其中img是Mat类型,但是这样达不到自动改变窗口大小的目的。
因为一般情况下,namedWindow(“src”,1)和imshow(“src”,img)一起用的。
下面来看看IplImage结构体内部:
int
nSize
int
ID
int
nChannels
int
alphaChannel
int
depth
char
colorModel [4]
char
channelSeq [4]
int
dataOrder
int
origin
int
align
int
width
int
height
struct _IplROI *
roi
struct _IplImage *
maskROI
void *
imageId
struct _IplTileInfo *
tileInfo
int
imageSize
char *
imageData
int
widthStep
int
BorderMode [4]
int
BorderConst [4]
char *
imageDataOrigin
而Mat结构体包含一个Mat头部(头部中记录的是矩阵的大小,存储方式等等)和一个指向矩阵的指针。所以2者还是有很大区别的,所以说程序不能自动将他们转换是有原因的,因为Mat结构更加复杂。
3. 读取图片的方式不同。
在c版本中读取图片用的是cvLoadImage;
比如说cvLoadImage(“lena.jpg”);
在c++版本中,读取图片用的是imread;
比如说imread(“lena.jpg”);
当然这2种的lena图片都是放入工程目录下的。
但是这里有一点非常不同的是,cvLoadImage()中的参数为const char*类型,而imread()中的参数是const &string型,这两种是完全不同的,在opencv中也不能自动转换好他们,混合使用c和c++函数一起编写opencv代码时要小心。
4. 路径表示方式不同。
在c版本中路径之间用2个双右斜线,即”//”。用1个斜线”/”会报错。
在c++版本中路径之间用1个或者2个甚至更多个斜线都是可以的。
- opencv中c/c++风格函数使用说明
- opencv中C风格和C++风格函数区别
- 学习opencv(2)---opencv中C风格和C++风格函数区别
- C风格字符串函数
- C语言memset函数使用说明
- 函数和C风格字符串
- 函数和C风格字符串
- C++::使用说明
- C/C++头文件、函数使用说明
- c 语言字符串相关函数使用说明
- C风格字符串函数
- (九十五)函数与C-风格字符串
- PostgreSQL C风格函数TEXT优化
- C版本的OpenCV函数
- 【C++】STL中map的详细使用说明
- C风格字符串[C++]
- string中c_str()、data()、copy(p,n)函数的用法(转c风格字符串)
- C#.net中使用Opencv
- VC连接MySQL
- metasploit-学习7--显示post的模块的所有post信息
- 表空间的管理、索引、sqldlr使用
- hdu 1159 最长公共子序列
- ADO.NET Entity Framework CodeFirst 如何输出日志(EF4.3)
- opencv中c/c++风格函数使用说明
- opencv中的Mat使用相关说明
- GlusterFS的分布式锁
- C语言的几个函数
- (6)apache2.2用proxy_ajp方式整合tomcat6.0
- 以C++为例子,通过操作内存模拟实现对象的持久化存储(一)
- 追忆我的大学四年
- tomcat7.0.2配置
- MySQL心得1--数据库的基本概念