MATLAB - 从 jpeg_write.c 创建 maxmaci64 时出错

Posted

技术标签:

【中文标题】MATLAB - 从 jpeg_write.c 创建 maxmaci64 时出错【英文标题】:MATLAB - Error creating maxmaci64 from jpeg_write.c 【发布时间】:2020-11-11 19:11:12 【问题描述】:

我在使用 jpeg 工具箱中的 jpeg_read.c 和 jpeg_write.c 中的 Mex 制作 mexmaci64 文件时遇到问题。我问了我的问题here,jpeg_read 的问题就解决了。 但是当我编译 jpeg_write.c 时仍然有不同的错误。 一切都是一样的,我没有改变任何路径或任何东西。 我不明白为什么 Matlab 控制台会返回此错误。 这对任何人来说都很熟悉吗?请告诉我。

>> mex -compatibleArrayDims -I/usr/local/Cellar/jpeg/9d/include jpeg_write.c -L/usr/local/Cellar/jpeg/9d/lib -ljpeg
Building with 'Xcode with Clang'.
Error using mex
/Users/folder/jpeg_toolbox/jpeg_write.c:56:10: fatal error: 'jpegint.h' file not found
#include <jpegint.h>
         ^~~~~~~~~~~
1 error generated.

【问题讨论】:

您的系统上是否有“jpegint.h”文件?它是您下载的软件包的一部分吗? 不,我搜索了文件名,但它在任何地方都不存在。我不知道应该安装什么库才能拥有该文件。 【参考方案1】:

首先:

通过指向jpeg 或其他库的/usr/local/Cellar/jpeg/&lt;version&gt;/include 位置,您依赖于当前安装的特定版本。您可能想改用/usr/local/opt/jpeg/include/ 等。 /usr/local/opt 是 Homebrew 公开其已安装包内容的非版本化演示的地方。

所以:

mex -compatibleArrayDims -I/usr/local/Cellar/jpeg/9d/include ...

这是指向jpeg 库。 jpeg 库是否提供 jpegint.h

$ ls /usr/local/Cellar/jpeg/9d/include/
jconfig.h  jerror.h  jmorecfg.h  jpeglib.h

不。所以这就是为什么它没有被发现。所以你必须弄清楚你实际上可以从哪里得到jpegint.h。点击 Google 并查阅您的文档,找出您实际尝试从哪个库中提取 jpegint.h,并使用适当的 -I-L-l 标志将其拉入。

如果您认为您已经安装了它,您可以使用find /usr/local/Cellar -name jpegint.h 来查找它。我在gdcm 包中找到了它。

[~] $ find /usr/local/Cellar -name jpegint.h
/usr/local/Cellar/gdcm/3.0.8_1/include/gdcm-3.0/gdcmjpeg/jpegint.h

所以你可能想要这样的东西:

mex -compatibleArrayDims -I/usr/local/opt/jpeg/include ...
    -I/usr/local/opt/gdcm/include/gdcm-3.0/gdcmjpeg ...
    jpeg_write.c ...
    -L/usr/local/opt/jpeg/lib -L/usr/local/opt/gdcm/lib ...
    -ljpeg -lgdcmjpeg16

(我不知道您是否真的想要-lgdcmjpeg8-lgdcmjpeg12-lgdcmjpeg16,或者其他什么。我只是在这里猜测。请参阅 GDCM 文档。)

【讨论】:

感谢您的回复安德鲁。我搜索了文件名并找不到它。我应该安装 gdcm 包来拥有它吗?还是还有其他包? 所以我安装了 gdcm 包并从那里使用 jpegint.h。然后我尝试了 mex 并且它有效但显示了警告。我不在乎。现在,当我运行我的项目时,Matlab 向我显示了一个与我在此处提到的 jpeg_write 相关的错误。 ***.com/questions/64820620/…你能帮我处理那个安德鲁吗?我会很感激的。

以上是关于MATLAB - 从 jpeg_write.c 创建 maxmaci64 时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MATLAB 中的矩阵创建子矩阵(全部 5*5)?

matlab一次性创建一堆变量

血糖检测基于matlab改进深度回归网络的无创血糖检测含Matlab源码 1572期

Matlab - 生成 HMM

利用BPSO与KNN进行特征选择及matlab代码实现

如何在MATLAB中创建子矩阵