OpenCV4 Win10 + VS2019 搭建入门 demo

下载并安装 opencv

首先,进入opencv官网 https://opencv.org/releases/ 下载 opencv。
如果是直接搜索 opencv 并进入的,可以依次单击 Resources —> Releases 进入对应下载页面。

在这里插入图片描述下载下来是一个可执行文件,运行后可以把在 window 上编译好的 opencv 释放到指定目录
在这里插入图片描述目录结构如下
在这里插入图片描述

VS2019 创建项目

创建项目时选择 “空项目”,opencv 程序是运行在控制台程序上的。
控制台负责输入输出,opencv 的 highgui 用来渲染和显示窗口。
在这里插入图片描述

“属性管理器”

依次点击 “视图” —> “其他窗口” —> “属性管理器” 打开属性管理器
在这里插入图片描述
在项目上右键,添加新项目属性表
在这里插入图片描述
添加好项目属性表后,就会在项目目录生成一个 “属性表” 文件。到时候创建其它项目,只需要在属性管理器添加一下 “现有属性表” 即可。
在这里插入图片描述
PropertySheet.props 文件内容如下

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <IncludePath>D:\workspace\opencv\opencv\build\include\opencv2;D:\workspace\opencv\opencv\build\include;$(IncludePath)</IncludePath>
    <LibraryPath>D:\workspace\opencv\opencv\build\x64\vc15\lib;$(LibraryPath)</LibraryPath>
    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <Link>
      <AdditionalDependencies>opencv_world430.lib;opencv_world430d.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
    <ClCompile>
      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>

入门代码

在 “解决方案资源管理器” 的 “源文件” 目录下,新建一个 cpp 文件,贴入如下代码

#include <iostream>
#include <opencv2/highgui.hpp>

using namespace cv;
using namespace std;

int main() {
	Mat image;
	image = imread("D:\\Users\\chy55\\Desktop\\QQ截图20200426154609.png");  //这里换成自己计算机上的本地图片

	if (image.empty()) {
		cout << "Could not open or find the image" << std::endl;
		return -1;
	}

	namedWindow("Display window", WINDOW_AUTOSIZE);
	imshow("Display window", image);

	waitKey(0);

	std::cout << "Hello World!\n";
}

运行成功

第一次运行会有点久!!!

运行成功后,会有两个窗口。一个是控制台,用来进行输入输出;另一个是 opencv 的 highgui 创建的窗口。
在这里插入图片描述

遇到的问题

运行提示找不到 opencv_world320.dll

在这里插入图片描述

解决办法是:把 opencv/opencv/build/x64/vc15/bin 下面的 dll 复制到 C:\Windows\System32 再运行项目即可。
在这里插入图片描述注意:把 opencv/opencv/build/x64/vc15/bin 目录添加到系统环境变量中,然后再重启或注销系统,也是可以解决这个问题的

imread 出来的图片 empty

如下这段代码,用 win32 的 Shlwapi 里的 PathFileExistsA 来判断,文件是存在的。但使用 imread 去读,却得到 empty 的返回。

#include <iostream>
#include <opencv2/highgui.hpp>
#include <Shlwapi.h>

#pragma comment(lib, "Shlwapi.lib")

using namespace cv;
using namespace std;

int main() {
	string filePath = "D:/workspace/MFC/opencv/res/123.jpg"; //这里换成自己计算机上的本地图片
	if (PathFileExistsA(filePath.c_str())) {
		cout << "File is exists " << endl;
	}
	Mat image = imread(filePath); 
	if (image.empty()) {
		cout << "Could not open or find the image" << std::endl;
		return -1;
	}
	waitKey(0);
	return 0;
}

解决方案

  1. 项目 —> 属性 —> "项目的属性页"对话框
  2. 属性管理器 —> PropertySheet —> "PropertySheet属性页"对话框

依次展开,配置属性 —> 链接器 —> 输入,可以看到如下图。

OpenCV 仅支持 x64,左上角如果配的是 Debug,附加依赖项就用带 d 的 lib,否则用另一个。如果像下图这样,两个都填,则有可能报错。

原因

LIB包含被DLL导出的函数名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到DLL文件。由于 Debug 版本未经编译器优化且包含调试信息,因此函数地址与 Release 版本是不同的,这就可能导致 LIB 指向一个错误的地址,从而得到错误的输出了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值