码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-30 22:06:02      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:opencv

今天终于把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的<^_^>
但是, 还是建议添加引用符号, 看上去更加容易理解一些。

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:opencv

原文地址:http://blog.csdn.net/zhyh1435589631/article/details/46699217

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!