gpt4 book ai didi

c++ - 自动包含不同版本的OpenCV库

转载 作者:太空宇宙 更新时间:2023-11-03 22:06:48 30 4
gpt4 key购买 nike

我已经使用以下代码在 Windows 7 上的 Visual Studio 2008 上自动包含我的 c++ 代码的 opencv 库文件:

#ifndef NDEBUG
#pragma comment(lib, "opencv_core231d.lib")
#pragma comment(lib, "opencv_highgui231d.lib")
#pragma comment(lib, "opencv_imgproc231d.lib")
#else
#pragma comment(lib, "opencv_core231.lib")
#pragma comment(lib, "opencv_highgui231.lib")
#pragma comment(lib, "opencv_imgproc231.lib")
#endif

但是当系统安装了不同版本的 opencv 库时我遇到了麻烦,因为 .lib 文件的文件名中有版本(在本例中为 2.31)。有没有一种自动或近乎自动地检测可用的 opencv 库版本然后将适当的版本字符串滑入 pragma 的好方法?

最佳答案

不同的 OpenCV 版本之间存在细微变化 - 变化不大,但当您从 2.0 更改为 2.2 或从 2.2 更改为 2.3.1 时,足以让您的应用程序崩溃。此外,beta 2.4 版本与以前的版本相比有足够的变化。

最好是使用 OpenCV 版本测试您的应用,并仅使用这些 dll 进行交付。

一个小例子:

Mat a(3,3,CV_8UC3);

a.setTo( Scalar(10) ); // in 2.3.1 will set all channels to 10,
// in 2.2 will only set first channel.

相应的 2.2 调用将是

a.setTo(Scalar::all(10));

或者

a = 0; // runs fine on 2.3.1. Equivalent to setTo().
// Does not compile on earlier versions

另一个例子是 cv::drawPoly(),它在 2.2 和 2.3.1 上有不同的签名。

鉴于这些更改没有得到很好的记录,错误错过其中一个的可能性非常高。

关于c++ - 自动包含不同版本的OpenCV库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10036144/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com