访问cvLoadImage()函数的正确头文件

时间:2018-11-29 10:59:09

标签: opencv

我正在尝试获取this存储库中提供的算法以在Windows上工作。在无数问题之后,我只剩下一个无法识别的函数cvLoadImage,它被适当地描述了。有人指示我改用c ++ API,但问题是我还必须重写代码的其他部分,否则可能会破坏它。

#include <opencv2/imgcodecs/imgcodecs_c.h>

在Visual Studio上返回以下错误:

“此具有旧式C API声明的标头已从OpenCV中删除。旧式内容可从legacy / constants_c.h文件中获得。”

我导入了opencv文件夹中提供的所有名为constants_c.h的文件,但没有一个包含函数定义。

1 个答案:

答案 0 :(得分:1)

确实是旧的OpenCV C API。您将需要将旧的C函数移植到c ++ OpenCV API,例如:

您使用的代码实际上是旧C API和新c ++ API的混合。 只需遍历该存储库中的所有C API调用并将它们手动移植到c ++ API即可。正如您在上面看到的,大多数情况下,这是相当直观的。如有疑问,请搜索OpenCV文档。

另外,您应该查看YOLOv2来检测行人。

更新

此存储库有多个分支,看起来Berak已经有removed the C API calls。他的更改是merged,因此您应该提取最新的更改并重建:

cd C4-Real-time-pedestrian-detection
git pull
cmake . -DCMAKE_CXX_FLAGS="-std=c++11"
make -j8

我已经在计算机上测试了以上内容:

Charlie Chaplin movie with Pedestrian Detection green bounding boxes

关于我的设置,我首先遇到此错误:

cvdef.h:656:4: error: "OpenCV 4.x+ requires enabled C++11 support"

这就是为什么我将-std=c++11编译器标志传递给cmake的原因。 这可能是因为我是带有Xcode 7.0的OSX(10.11.6)的旧版本(现在大约3年了)。当前计算机具有8个内核,因此为make -j8。 可以根据需要在计算机上随意更改这两个选项。