Call matlab in python

1. matlab code

addpath(genpath('/home/duino/Downloads/toolbox/channels'));
img = imread('test.jpg');
hs = 207
ws = 270
im_data = (imResample(single(img), [hs ws], 'bilinear')-127.5)*0.0078125;

imResample(…) is a function in toolbox.

2. python solution

  1. Install matlab_wrapper.
  2. Create script.m which call toolbox function.

    addpath(genpath('/home/duino/Downloads/toolbox/channels'));
    im_data = (imResample(single(img), [hs ws], 'bilinear')-127.5)*0.0078125;
  3. Create test.py to run srcipt.m

    import numpy as np
    import matlab_wrapper
    import cv2
    
    def imResample(img, hs, ws):
        matlab = matlab_wrapper.MatlabSession()
        matlab.put('img', img)
        matlab.put('hs', hs)
        matlab.put('ws', ws)
        matlab.eval('script')
        im_data = matlab.get('im_data')
        return im_data
    
    def main():
        img = cv2.imread('test.jpg');
        img = img.astype(float)
        hs = 207
        ws = 270
        im_data = imResample(img, hs, ws)
        print im_data[0, 0, :]
    
    if __name__ == "__main__":
        main()

    Run test.py to get result from matlab code.

你可能感兴趣的:(python)