Проблема с переписыванием кода с Matlab на python

#python #matlab

#питон #matlab

Вопрос:

Я новичок в Python и пытаюсь преобразовать и изменить следующий код из Matlab в python:

 function A = alg_a(RGBimage, n) [row, column, d] = size(RGBimage); if (d==3)  HSVimage = rgb2hsv(RGBimage);  V = HSVimage(:,:,3); else  V =double(RGBimage)/255; end V=V(:); [Vsorted, ix] = sort(V); s = (row*column)/n; i=0; h=[]; while (i lt; n)  i=i 1;  z = Vsorted(((floor(s*(i-1)) 1)):floor(s*i));  Vstart = (s*(i-1))/(row*column);  Vstop = (s*i)/(row*column);  r=z-z(1);  f = (1/n)/(r(size(r,1)));  g = r*f;  if(isnan(g(1)))  g = r   Vstop;  else  g = g   Vstart;  end  h=vertcat(h,g); end m(ix)=h; m=m(:); if(d==3)  HSVimage(:,:,3) = reshape(m,row,column);  A=hsv2rgb(HSVimage); else  A=reshape(m,row,column); end return; end  

Эта функция реализует алгоритм предварительной обработки изображений SMQT, и моя проблема в том, что я действительно не понимаю, как это работает, поэтому я застрял здесь:

 import cv2 import numpy as np import math  img = cv2.imread("16.bmp") n = 8  (row, column, dim) = img.shape if dim == 3:  hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)  V = hsv_img[:, :, 2] else:  V = img / 255  V = V.flatten(order='F') Ix = V.argsort()[::-1] V_sorted = V[Ix] s = int(row*column/n) i = 0 h = []  while i lt; n:  i  = 1  z = V_sorted[math.floor(s*(i-1)) 1:math.floor(s*i)]  z = np.array(z)  V_start = (s*(i-1))/(row*column)  V_stop = (s * i) / (row * column)  r = z - z[0]  f = (1 / n) / r[len(r)-1]  g = r * f   if math.isnan(g[0]):  g = r   V_stop  else:  g = g   V_start   if len(h) == 0:  h = g  else:  h = np.vstack((h, g)) M = np.array([]) M[Ix] = h M = M.flatten(order='F') if dim == 3:  hsv_img = np.reshape(M, row, column)  img_res = cv2.cvtColor(img, cv2.COLOR_HSV2BGR) else:  img_res = np.reshape(M, row, column) cv2.imwrite('16_smqt', img_res)  

Похоже, что я написал код, аналогичный по функциональности, но он не работает, и я понятия не имею, почему. Код Matlab был взят мной из статьи, поэтому я не сомневаюсь, что он работает. Пожалуйста, помогите мне найти неточности в моем переводе с Matlab на python.

Комментарии:

1. Я бы посоветовал вам выучить Numpy. Это очень помогает в решении матриц и численных задач.

2. В чем именно заключается проблема?