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

来源:互联网 发布:php ftp put上传失败 编辑:程序博客网 时间:2024/05/16 09:41

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.jpgvs环境:对于使用vs的这使用..\\Lena.jpg,第一个\为转义字符


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

在除了添加

#include <iostream>

还要使用

using namespacestd;

0 0