Тема: Python то Pascal
Показать сообщение отдельно
  #1  
Старый 24.10.2014, 14:25
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию Python то Pascal

Доброго денечка, уважаемые, сразу оговорюсь, что в Питоне я не силен, так что прощу вашей помощи в переводе на паскаль данного скриптика:

Код:
def get_skin_ratio(im):
    im = im.crop((int(im.size[0]*0.2), int(im.size[1]*0.2), im.size[0]-int(im.size[0]*0.2), im.size[1]-int(im.size[1]*0.2)))
    skin = sum([count for count, rgb in im.getcolors(im.size[0]*im.size[1]) if rgb[0]>60 and rgb[1]<(rgb[0]*0.85) and rgb[2]<(rgb[0]*0.7) and rgb[1]>(rgb[0]*0.4) and rgb[2]>(rgb[0]*0.2)])
    return float(skin)/float(im.size[0]*im.size[1])

Думаю, что должно выглядеть как то так:

Код:
procedure TForm1.Button24Click(Sender: TObject);
type
  PCardArray = ^TCardArray;
  TCardArray = array [0 .. 8191] of Cardinal;
var
  x, y: Cardinal;
  Line: PCardArray;
  R, G, B: Byte;
begin
  Nude := 0;
  with Image1.Picture.BitMap do
  begin
    PixelFormat := pf32bit;
    for y := 0 to Height - 1 do
    begin
      Line := ScanLine[y];
      for x := 0 to Width - 1 do
      begin
        R := GetRValue(Line[x]);
        G := GetGValue(Line[x]);
        B := GetBValue(Line[x]);
        if (R > 60) and (G < (R * 0.85)) and (B < (R * 0.7)) and (G > (R * 0.4)) and (B > (R * 0.2)) then Line[x] := $FFFFFF;//Но, ничего не происходит
      end;
    end;
  end;
end;
Ответить с цитированием