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

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值