为 OpenCV 编译 MATLAB 绑定

Posted

技术标签:

【中文标题】为 OpenCV 编译 MATLAB 绑定【英文标题】:Compile MATLAB bindings for OpenCV 【发布时间】:2014-02-28 10:13:00 【问题描述】:

我正在尝试为 OpenCV 3.0 编译 MATLAB 绑定,即来自 Github 的当前版本。我不断收到以下错误:

CMake Error at /opencv/modules/matlab/compile.cmake:47 (message):
  Failed to compile createCalibrateDebevec:
  /opencv/build/modules/matlab/src/createCalibrateDebevec.cpp:
  In function ‘void mexFunction(int, mxArray**, int, const mxArray**)’:

  /opencv/build/modules/matlab/src/createCalibrateDebevec.cpp:46:3:
  error: ‘Ptr_CalibrateDebevec’ was not declared in this scope

这发生在多个文件中。我发现了这个thread,它讨论了一些补救措施,即。在 bridge.hpp 文件中添加一些 typedef,但这会在编译时导致更多错误。我还发现了这个thread,它建议删除有问题的 .cpp 文件并进行编译。这导致无错误编译,然后进行通常的 make 安装。但是,现在从 MATLAB 内部调用任何 OpenCV 函数都会导致以下错误:

If = cv.dft(I, 'flags', cv.DFT_COMPLEX_OUTPUT);
Error using dft
cv::exception caught:
/home/xxx/opencv-master/modules/core/src/dxt.cpp:1760: error: (-215)
type == CV_32FC1 || type == CV_32FC2 || type == CV_64FC1 || type == CV_64FC2
in function dft

另一个错误示例:

im_denoise = cv.fastNlMeansDenoising(im_noise, 18);
Error using fastNlMeansDenoising
cv::exception caught:
/home/xxx/opencv-master/modules/photo/src/fast_nlmeans_denoising_invoker.hpp:146:
error: (-215) almost_dist2weight_[0] == fixed_point_mult_ in function
FastNlMeansDenoisingInvoker

非常感谢任何有关如何解决这些问题的帮助!

【问题讨论】:

@AruniRC - 你开始赏金是因为“这个问题没有得到足够的关注” - 但是你没有提供关于你在这里得到的答案和建议的任何反馈......这不是正确的方法引起注意。 我能够编译和链接所有内容,没有任何错误。我只是确保编译时使用的每个库/sdk 具有相同的架构。例如,如果您的 matlab 是 64 位,那么请确保您在 CMake 中选择了 64 位编译器,并且还找到了 64 位 Python。但是,不知何故,matlab 文件没有附带它们的 mex 文件。我可以看到生成的所有 .cpp 文件,但是编译和安装后没有编译过的 mex。 【参考方案1】:

关于您得到的'cv::exception caught' 错误:似乎cv 期望输入图像为浮点类型(分别为singledouble'CV_32FC1''CV_64FC1')。 尝试使用im2singleim2double 将输入图像Iim_noise 转换为浮点数,看看这些错误是否再次出现。

【讨论】:

这引发了新的错误。我想我会等待 MATLAB 绑定与 OpenCV 的下一个正式版本一起发布。不过感谢您的回答。【参考方案2】:

您可能想查看this tutorial,了解如何为最新的 OpenCV 3.0 开发人员编译 matlab mex。

它还包含 OpenCV matlab 和 C++ 的预编译二进制文件

【讨论】:

以上是关于为 OpenCV 编译 MATLAB 绑定的主要内容,如果未能解决你的问题,请参考以下文章

在Linux上安装和编译OpenCV3.0.0

opencv绑定ios

MATLAB + Mex + OpenCV:链接和编译正确,但在运行时找不到库

OpenCV 中 MATLAB 的 caxis 等价物

如何编译原始 Haskell 绑定到 OpenCV 又名 GitHub 成员 arjuncomar 的 OpenCV-Raw 存储库

PIL.Image.open 与 cv2.imread 读取的图片在像素点上不一致