我使用openCV 2.4.7和C++来构建一个最终将被分发的应用程序。据我所知,openCV属于BSD开源许可证。
然而,我发现有一个名为features2d的包,它有一个称为MSER的类,该类使用一个名"chitab3"的表。此表摘自GPL下的一篇论文。这出现在模块/features2d/src/mser.cpp的源代码中,如下所示:
- 彩色图像算法取自:用于识别和匹配的最大稳定彩色区域
- 它应该比灰度图像方法慢得多(3~4倍)
- chi_table.h文件直接取自本文在GPL下发布的源代码
由于MSER类在features2d中可用,因此当features2d.dll被分发时,MSER以及最终的chitab3也是可用的。
所有这些导致了以下问题:
-
防止使用chitab3的最佳做法是什么?我不使用MSER类,但需要features2d.dll,因为它有应用程序所需的其他模块。
-
如果chitab3在GPL下,那么即使MSER、features2d和openCV也应该在GPL之下。为什么openCV在BSD下,尽管它的一个模块在GPL下?
您应该直接向OpenCV团队报告此问题,让他们意识到这一点。
对于您的应用程序,在将MSER移动到非自由OpenCV模块并在构建系统中显式禁用非自由模块后,您可以简单地从源代码重新编译OpenCV。然后,您发送的dll不包含任何不能在您方便的时候使用的数据/代码。