0. 实验环境
Ubuntu 16.04
Matlab R2015b
1. 借助于 mlab 库
安装方法非常简单,只需一行命令 sudo pip install mlab 即可。
import numpy as np
from PIL import Image
from mlab.releases import latest_release as matlab
image = Image.open('1.jpg')
image = np.array(image)
h, w = image.shape
print(image.shape) # (413, 295)
在上面的代码中,我们先读入一个图片,然后将其转化为一个 Numpy 数组。接下来,假如我们想通过调用 MATLAB 的 imresize 函数来对这幅图像进行 4 倍上采样,那么我们要做的就是将这个 Numpy 数组传递到 MATLAB 中,然后调用相应的函数,最后再将结果返回到 Python 中。
但是,MATLAB 并不支持将 Python 中的 Numpy 数组直接映射为矩阵,具体映射方式可参考 从 Python 将数据传递到 MATLAB。所以,我们需要先将数组转化为列表,然后通过 matlab.double(initializer=None, size=None, is_complex=False) 构造函数 在 Python 中创建 MATLAB 数组,最后再调整到原来图片的大小。这时候,我们就可以调用 MATLAB 的函数得到我们想要的结果了。
image = image.reshape(-1, 1)
image = image.tolist()
image = matlab.double(image)
image = matlab.reshape(image, (h, w))
resized_image = matlab.imresize(image, 4, 'bicubic')
print(resized_image.shape) # (1652, 1180)
如果我们想要调用自定义函数,比如下面这样的 m 文件。
function c = add(a, b)
c = a + b;
end
<