macOS上如何在MATLAB中编译使用jpegtbx_1.4?

预备:jpegtbx_1.4全称是JPEG Toolbox v1.4,是一个对JPEG图像进行处理的函数集合。这个工具箱可以借助MATLAB提取出JPEG图像的头信息、编码信息、DCT系数矩阵、量化表、哈夫曼表等JPEG元素,以供我们图像处理、信息隐藏来使用。

这个工具箱基于IJG(i.e. Independent JPEG Group)进行开发,代码内容是C语言,属于MATLAB\C混合编程。使用这个工具箱,我们需要在MATLAB中用mex命令进行编译。

这个操作在win、Linux中很容易实现,但在macOS中,会遇到问题。

本文涉及组件及版本:
MATLAB R2017b for mac
IJG v9
jpegtbx_1.4
macOS 10.15.1 Catalina

一、配置IJG框架

不能跳过这个步骤,除非你清楚你的mac中已经有IJG框架。

1、下载IJG

官网:www.ijg.org。macOS请选择tar.gz格式的压缩包。下载下来后解压开(我的版本是v9)。

2、安装IJG

里面有一个install.txt,里面详细说明了安装方法。我在这里简要讲一讲。
步骤1:使用终端(Terminal)进入解压出的文件夹。用ls | grep configure查找一下看是否有一个叫configure的执行文件。(如果没有,你可能进错地方了)
步骤2:终端内执行:./configure,系统会自动配置IJG。
步骤3:终端内执行:make,对文件进行编译。
步骤4:终端内执行:make test测试是否可用。如果可用,文件夹内会多出很多图片:

恭喜完成第一步。

二、准备编译jpegtbx

这里需要做的准备工作就是,寻找一个lib库。因为编译jpegtbx一定要用到这个库。这个库里放置了编译时要用的头文件。我当初没有人告诉我这个库文件在哪里,自己明知道缺少一个库文件,却不知道这个文件已经悄悄藏在了我的电脑里面。结果苦苦在百度、必应、谷歌上搜了半天,最后在StackOverFlow上有个老外的回答里得到了启发。(半天还算好,我的一个研究生学长弄了两天未果,最终放弃了)。咳咳!!!
使用终端执行:

cd /usr/local/lib             #进入该目录
ls | grep jpeg                #筛选出名称包含jpeg的项目

执行完成后,你应该找到了一个libjpeg.a的文件。这就对了,恭喜你!
如果没有,那证明你的IJG框架没有搭成功,回到“一、配置IJG框架”再试。

三、编译jpegtbx_1.4

做好了一切铺垫,我们开始做最重要的MATLAB编译工作。

打开MATLAB(我的版本是R2017b for mac),一般来说,不低于2012的版本都可以用这个教程。

使用命令:mex -I<IJGPATH> jpeg_read.c <LIBJPEG>来编译jpeg_read()函数。
使用命令:mex -I<IJGPATH> jpeg_write.c <LIBJPEG>来编译jpeg_write()函数。
注意:把IJGPATH替换为你的IJG路径,应该是一个名叫jpeg-9d的文件夹(9是我现在的版本)。假如这个文件夹不在MATLAB的工作路径(PATH)下,你需要使用绝对路径。
LIBJPEG替换为/usr/local/lib/libjpeg.a

正常情况下,不会报错。
执行完成后,MATLAB会恭喜你成功,同时你可以到在jpegtbx_1,4的路径中已经有了后缀名为.mexmaci64的两个文件。

这样一来,再将jpegtbx_1.4这个文件夹加入MATLAB工作路径,你就可以在MATLAB中使用jpeg_read()和jpeg_write()两个函数来读取和生成JPEG图像了!

四、问题讨论

这是我跳过的坑,可能具有偶然性。如果你发现其他的坑,很欢迎在评论区告诉我!

[Mac]图像处理JPEG工具箱jpegtbx_1.4的MATLAB编译及使用相关推荐

  1. 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》——1.2 数字图像处理与机器视觉...

    本节书摘来自异步社区出版社<Visual C++ 2012 开发权威指南>一书中的第1章,第1.2节,作者: 张铮 , 徐超 , 任淑霞 , 韩海玲,更多章节内容可以访问云栖社区" ...

  2. 《数字图像处理与机器视觉——Visual C++与Matlab实现》——0.2 数字图像处理与识别...

    本节书摘来自异步社区出版社<数字图像处理与机器视觉--Visual C++与Matlab实现>一书中的第0章,第0.2节,作者: 张铮 , 王艳平 , 薛桂香,更多章节内容可以访问云栖社区 ...

  3. 网络控制系统仿真:Truetime2.0工具箱安装(win10 + matlab R2017b)

    最新更新:matlab2018之后的版本和truetime2.0不兼容,我修改了下truetime源码的内核代码,出错的同学可以试试,点击此处下载 提取码:8888 . 网络控制系统简介     网络 ...

  4. 领域平均法matlab代码实验,数字图像处理邻域平均法滤波实验报告matlab实现.doc...

    数字图像处理邻域平均法滤波实验报告matlab实现 数字图像处理 实验报告 实验三 邻域平均法滤波 学号 姓名 实验三 邻域平均法滤波 一.实验内容 选取噪声较明显的图像,分别采用3*3.5*5.7* ...

  5. 数字图像处理:图像的灰度变换(Matlab实现)

    数字图像处理:图像的灰度变换(Matlab实现) (1)线性变换: 通过建立灰度映射来调整源图像的灰度. k>1增强图像的对比度:k=1调节图像亮度,通过改变d值达到调节亮度目的:0 i = i ...

  6. matlab怎么跑.cpp程序,MATLAB编译cpp文件

    目的:打通MATLAB与VC之间的通道,实现用MATLAB调用VC程序,以及VC调用MATLAB程序. 上篇博客实现了将MATLAB的M文件编译成C/C++文件,exe应用程序.这篇实现MATLAB编 ...

  7. 【Matlab开发】MATLAB编译C/C++代码

    在使用MATLAB编译C/C++代码时,C/C++代码中要使用一个mexFunction函数,那么这个函数是如何定义,在编译时又是如何实现的呢?下面我将使用实例进行说明. 如一个简单的函数: doub ...

  8. 【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

    转自:matlab与C/C++混合编程--在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 date version comments ...

  9. matlab 找不到 mcr,如何在没有MCR / MATLAB的情况下在C#中使用MATLAB编译的DLL?

    对不起,如果这个问题已被提出,但我找不到我一直在寻找的东西.我想知道是否有办法在C#中使用MATLAB编译的c-shared库而不使用MCR / MATLAB(或者通常任何其他安装),例如使用这个简单 ...

  10. Image Processing——图像处理教程(二)之MATLAB基础

    图像处理的MATLAB基础 一.MATLAB在图像处理领域的优点 优秀的矩阵运算能力 在图像处理教程(一) 中我们提到每一张图片都可以看做是一个由像素点组成的矩阵,黑白图片用一个二维矩阵就可以表示,彩 ...

最新文章

  1. jittor和pytorch生成网络对比之esrgan
  2. php中redis怎么使用,redis 怎么使用
  3. Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA
  4. 多少个没收到会收敛_三分历史纪录2973个,库里2483个,库里生涯结束三分会是多少个?...
  5. MySQL InnoDB 锁表与锁行
  6. controller中执行main方法报错NoClassDefFoundError: javax/servlet/http/HttpServletResponse
  7. oracle表分区设计_ORACLE 分区表的设计
  8. Selenium 屏幕截图
  9. 初三学生什么时候上一对一效果最好?
  10. the 1st one
  11. 宇瞻筹划转型 标准型内存不再是重头产品
  12. MP算法与OMP算法
  13. 极风云五里界IDC数据中心架构方案
  14. VUE和Element-UI下拉框select实现拼音,中文搜索
  15. 安立公司推出CPRI RF 测量选件
  16. 【分子动力学模拟】centos7使用gmx_MMPBSA时使用gmx_MMPBSA_ana时无法调用pyqt5
  17. 电视直播Android9,电视直播高清Android 1.9免费版(移动电视直播工具)
  18. 欧氏空间距离和内积_欧式空间、内积空间和赋范空间之间的关系
  19. 减肥坚持不下去?一个立竿见影的方法
  20. HDU 4602 Partition 规律题

热门文章

  1. 强烈推荐APP破解常用工具集合!
  2. 小米笔记本 Air 13.3 黑苹果教程
  3. 路由器安装教程和使用方法
  4. 10负3次方计算机语言,10的负3次方等于多少?
  5. Fences -让你的桌面图标分组显示,成块状化
  6. 批处理跑Axapta多个主计划
  7. stm8s003f3使用杂记
  8. R语言课程设计之-深圳房价预测模型
  9. Webpack5学习笔记(基础篇七)—— Loader加载器
  10. 气溶胶反演输入转化错误_暗目标法的Himawari-8静止卫星数据气溶胶反演