您的位置:首页 > 编程语言 > Qt开发

qt下OpenCV编程、vs下OpenCV编程笔记

2014-10-30 08:57 267 查看
1、 载入图片

在qt环境中使用"/"

vs环境中则使用“ \ ”

pImg=cvLoadImage("C:/Lena.jpg",CV_LOAD_IMAGE_COLOR);//C:/2.jpg要使用'/'而不是windows的'\'

2、注释掉cvNamedWindow("Image",CV_WINDOW_AUTOSIZE)//为什么程序也运行?

                  cvReleaseImage(&pImage);//为什么我把这条语句放在cvWaitKey前面时,窗口仍然有图像显示,放在cvShowImage前面时才没有图片显示

使用下面代码需要包含相应库

#include "highgui.h"
#include "cv.h"
#include "cxcore.h"
int main() {
//声明IplImage指针
IplImage* pImg;

//载入图片
pImg=cvLoadImage("C:/Lena.jpg",CV_LOAD_IMAGE_COLOR);
if(NULL==pImg)

{
printf("image can't read!\n");
return -1;
}

    // Mat image(pImg); //有这句话,为什么会出错
//创建窗口
// cvNamedWindow("Image",CV_WINDOW_AUTOSIZE);  // 为什么注释掉这句话,程序尼玛也运行

 //显示图像
cvShowImage("Image",pImg);

    //等待按键
cvWaitKey(0);

    //销毁窗口
cvDestroyWindow("Image");

    //释放图像
cvReleaseImage(&pImg);     // 为什么我把这条语句放在cvWaitKey前面时,窗口仍然有图像显示,放在cvShowImage前面时才没有图片显示
return 0;
}


3、需使用cv::前缀的函数(即需要使用usingnamespacecv;)

imread("Lena.jpg");

namedWindow("loveLena",CV_WINDOW_AUTOSIZE);

imshow("loveLena",img);

waitKey();//等待按键

而以下函数如:

cvLoadImage("C:/Lena.jpg",CV_LOAD_IMAGE_COLOR);

cvShowImage("Image",pImg)

cvWaitKey(0);

cvReleaseImage(&pImg);

cvDestroyWindow("Image");

cvNamedWindow("Image",CV_WINDOW_AUTOSIZE);

这些函数则不需要cv::前缀,原因是上面函数上C语言版本的

C++版本的好处在于

a、在于可以尽量避免使用指针这种危险的东西了。

b、另一个好处便在于,不用费心去release资源了,因为在其destructor里面,系统会自动帮你搞定。

4、读入图片路径

路径可使用相对路径和绝对路径

pImg=cvLoadImage("C:/Lena.jpg",CV_LOAD_IMAGE_COLOR);

pImg=cvLoadImage("../Lena.jpg",CV_LOAD_IMAGE_COLOR);//  /Lena.jpg前面有
“..”

qt环境:

图片放在工程目录中直接使用cvLoadImage("Lena.jpg",CV_LOAD_IMAGE_COLOR);不行,要把图片放在工程目录的上一层

然后使用../Lena.jpg
vs环境:
对于使用vs的这使用..\\Lena.jpg,第一个\为转义字符


5、error: 'cout' is not a member of 'cv'

在除了添加

#include
<iostream>

还要使用

using namespace
std;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt vs opencv 编程 差别