vs2017 + opencv3.4.2配置

https://opencv.org/releases.html

opencv下载地址如上,

下载下来之后是一个是一个exe文件,双击双击exe文件,弹出对话框,需要指定一个目录,会将opencv解压到指定目录,不需要重复指定opencv,该exe程序会自动添加opencv目录,也可以随便指定,然后复制粘贴。

有用的文件lib、dll

opencv\build\x64\vc15\lib下面的两个lib,opencv_world342.lib和opencv_world342d.lib,带d的是debug版本

新建一个MFCApplication

默认会有一个MFCApplication1Dlg

对话框中新增一个button

MFCApplication1Dlg.cpp中加入如下两个文件,并using namespace cv;不然会报错识别不到Mat、imread等

#include<opencv2\opencv.hpp>
#include<opencv2\highgui.hpp>

using namespace cv;

编写一个Mat转CImage的函数

int Mat2CImage(Mat *mat, CImage &img) {
    if (!mat || mat->empty())
        return -1;
    int nBPP = mat->channels() * 8;
    img.Create(mat->cols, mat->rows, nBPP);
    if (nBPP == 8)
    {
        static RGBQUAD pRGB[256];
        for (int i = 0; i < 256; i++)
            pRGB[i].rgbBlue = pRGB[i].rgbGreen = pRGB[i].rgbRed = i;
        img.SetColorTable(0, 256, pRGB);
    }
    uchar* psrc = mat->data;
    uchar* pdst = (uchar*)img.GetBits();
    int imgPitch = img.GetPitch();
    for (int y = 0; y < mat->rows; y++)
    {
        memcpy(pdst, psrc, mat->cols*mat->channels());//mat->step is incorrect for those images created by roi (sub-images!)
        psrc += mat->step;
        pdst += imgPitch;
    }

    return 0;
}

编写点击按钮响应函数

void CMFCApplication1Dlg::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码
    Mat matImg = imread("d:\\worktips\\worktips.jpg"); //这个路径可以随便改,也可以添加一个edit控件然后从中获取输入
    CImage img;
    RECT   rt;

    Mat2CImage(&matImg, img);
    this->GetClientRect(&rt);

    img.Draw(this->GetDC()->GetSafeHdc(), rt);
}

就这样点击按钮只后会看到一个按钮和一张图片

如果提示找不到opencv_world342.dll

可以把E:\opencv\build\x64\vc15\bin下的opencv_world342.dll复制到生成的exe所在目录

这是第一个实例,不过从实例可以看出,单单处理一个图片不需要下载的opencv以外的其他文件,

这个示例是release x64平台,可能x86还需要自己编译库,暂时yong用不上,不做深究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值