当我们混合使用opencv和dlib时,cv :: imread()在c ++项目中失败

阿莫

我在Visual Studio 2019中创建了一个c ++项目。我编译并构建了openCV版本4.2.0和dlib版本19.19.0,并在我的c ++项目中使用了它。我在单个项目中使用opencv和dlib的座右铭是我想使用opencv的DNN(caffe)和dlib的基于hog + svm的面部检测器(get_frontal_face_detector())进行面部检测。

我的两个功能是分开的,即detectFaceByOpenCVDNN()用于基于opencv的面部检测和detectFaceBydlibHOG()用于基于dlib的HOG + SVM的检测器。

我添加了两个项目的include目录,lib目录(其他库目录),并提到了.lib文件的其他依赖性。

该项目的构建成功,并生成.lib文件。通过使用此文件,另一个c ++控制台应用程序需要detectFaceByOpenCVDNN()(opencv人脸检测器)。

的代码detectFaceByOpenCVDNN()

#include <opencv2/imgcodecs.hpp>
#include <opencv2/dnn/dnn.hpp>

#include <dlib/image_processing/frontal_face_detector.h>
#include <dlib/gui_widgets.h>
#include <dlib/image_io.h>

using namespace dlib;
using namespace std;
using namespace cv::dnn;

void namespace_name::FaceDetection::detectFaceByOpenCVDNN(std::string filename)
{    

Net net;        
cv::Mat frame = cv::imread(filename);

if (frame.empty())
    throw std::exception("provided image file is not found or unable to open.");

int frameHeight = frame.rows;
int frameWidth = frame.cols;
    .... // code continues
}

当我执行此功能时,会收到异常消息,例如“找不到或无法打开提供的图像文件”。如果frame.empty()返回true ,则抛出该异常控制台上不会显示其他异常。

虽然只是在研究使失败的原因,但我知道,如果我dlib19.19.0_debug_32bit_msvc1924.lib从Properties-> Linker-> Input-> Additional Dependencies中删除条目,则frame.empty()返回false,然后程序继续。

但是我仍然不明白,为什么在单个c ++项目中使用opencv和dlib时cv :: imread()失败?

戴维斯·金

您是否使用libjpeg和dbpng静态构建了dlib?这可能与静态构建在您的opencv .lib文件中的这些库的相似副本冲突。如果不使用这些库,只需重建dlib即可。

或将opencv和dlib链接到相同的libjpeg和libpng库。

Dlib的cmake文件将尝试与libjpeg和libpng链接,如果找不到,则会生成系统副本并将其静态链接到dlib / external中。您可以通过设置DLIB_JPEG_SUPPORT控制cmake是否尝试链接到这些东西。DLIB_PNG_SUPPORT

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

图片正常时,使用imread of OpenCV失败

普通的C ++代码在一个测试项目中通过,而在主要项目中则失败

UWP C# 项目中 HTTP 重定向请求失败

为什么程序集绑定在我的项目中失败?

生成失败时在其他项目中创建错误

在我的C ++项目中使用tcmalloc

当我们在C#中使用JOIN和GROUP BY查询时如何填充datagridview

当我添加C ++代码时,Xcode iOS项目失败

MFC和/ clr C ++项目中的库

在C项目中使用Eigen

检查C项目中未使用的变量

在Qt C ++项目中使用Go

仅当我在C项目中使用代码时才会出现list.h语法错误

在另一个项目中使用项目中的工具 (c#)

错误:我添加新依赖项时,项目中的任务':app:dexDebug'错误执行失败

如何使用GUI将外部库和项目导入到我的C ++项目中?

我可以在C ++项目中使用Watson TTS吗?

我可以在C ++ OpenGL项目中使用什么UI?

构建失败,出现 androidX 错误,但我没有在项目中使用 androidX

我的项目中未使用Firebase,但仍引发Firebase API初始化失败

在WebApi2项目中使用CacheOutput属性时,依赖项的解析失败

在ASP.NET MVC项目中使用实体框架代码优先时登录失败错误

使用git时,在C#项目中应该忽略什么?

当我们在一个项目中绑定对象并从第二个项目中查找时,不会发生JNDI查找

我如何从C#项目中调用C ++函数

我正在尝试将mongoose安装到我的nodejs项目中,但失败了

当我们更改系统时间时,hornetq 失败

C++/C 项目中的 Getter 和 Setter?

我的Spring Boot项目中包含了liqubase,但仍执行data.sql并失败