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

QT+opencv学习笔记一 opencv配置及Mat浅拷贝

2015-06-30 19:08 621 查看
今天终于把Qt + opencv配置成功了,中间有一些曲折,在这里记录一下。

vs2013 + opencv的方法之前记录过,但这次的不太一样,我们一开始按照这篇文章配置pro

Qt5中进行OpenCV开发教程

但是,死活出不来结果,研究发现,我们用的是 mingw 不是 vs,这个方法适合vs编译器 (具体可以参考:win7下的Qt环境+OpenCV视觉库

后来,我们找到了这篇文章 QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置

但是还是有点曲折,

一开始没有勾选 WITH_QT

, 大家都懂的,gg了。

后来,重新弄的时候, 还勾选了 WITH_OPENGL, 因为中途系统崩溃过一次, QT虽然可以直接用, 但是环境变量中的path都不见了, 于是还是需要重新添加一下, path 环境变量的。

这边顺便记录一下我在 pro中添加的配置:

INCLUDEPATH += E:\opencv2.4.9\opencv\build_MinGW\install\include \
E:\opencv2.4.9\opencv\build_MinGW\install\include\opencv \
E:\opencv2.4.9\opencv\build_MinGW\install\include\opencv2

# ========================== x64 =======================
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_videostab249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_calib3d249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_contrib249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_core249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_features2d249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_flann249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_gpu249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_highgui249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_imgproc249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_legacy249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_ml249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_nonfree249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_objdetect249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_ocl249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_photo249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_stitching249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_superres249.dll.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_ts249.a
LIBS += E:/opencv2.4.9/opencv/build_MinGW/install/x64/mingw/lib/libopencv_video249.dll.a


以上是配置opencv部分

===============【我是华丽丽的分割线】========================

配置成功opencv之后, 对着书 抄了一段代码:

#include <opencv.hpp>
#include <iostream>

using namespace std;

void salt(cv::Mat &image, int n)
{
for (int k = 0; k < n; k++)
{
int i = rand()%image.cols;
int j = rand()%image.rows;

if(image.channels() == 1) // 灰度图
{
image.at<uchar>(j, i) = 255;
}
else if(image.channels() == 3) // rgb 图
{
image.at<cv::Vec3b>(j, i)[0] = 255;
image.at<cv::Vec3b>(j, i)[1] = 255;
image.at<cv::Vec3b>(j, i)[2] = 255;
}
}
}

int main()
{
cv::Mat image = cv::imread("E:\\system dir\\Desktop\\1_5.jpg");
salt(image, 3000);
cv::namedWindow("Image", 1);
cv::imshow("Image", image);
cv::waitKey(0);
return 0;
}


这段代码实现的功能很简单, 导入一张图片, 并添加椒盐噪声。

这里需要注意的一点是:

void salt(cv::Mat &image, int n)
void salt(cv::Mat image, int n)


在opencv中, 这两种形式都是可以达到添加噪声的效果的, 个人理解,原因在于opencv的 Mat 本质上是一个智能指针,即使是作为形参传递给函数, 也只是将他的引用计数加1. 换句话说实际上是浅拷贝。

因而, 加不加 & 都是OK的<^_^>

但是, 还是建议添加引用符号, 看上去更加容易理解一些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: