|
Вопрос # 6 112/ вопрос открыт / |
|
Здравствуйте, эксперты! есть код на C# + dll,+exe, помогите переделать под делфи
вот код:
#include "windows.h"
#include "loadbmp.h" // from http://gpwiki.org/index.php/LoadBMPCpp
#include "fdlib.h"
void main(int argc, char *argv[])
{
int i, n, x[256], y[256], size[256], w, h, threshold;
BMPImg *bi;
unsigned char *bgrdata, *graydata;
if (argc==1)
{
printf("usage: fdtest bmpfilename [threshold]\n");
exit(0);
}
bi = new BMPImg();
printf("\nloading %s\n", argv[1]);
bi->Load(argv[1]);
w = bi->GetWidth();
h = bi->GetHeight();
printf("image is %dx%d pixels\n", w, h);
bgrdata = bi->GetImg();
graydata = new unsigned char[w*h];
for (i=0; i<w*h; i++)
{
graydata[i] = (unsigned char) ((.11*bgrdata[3*i] + .59*bgrdata[3*i+1] + .3*bgrdata[3*i+2]));
//if (i<10) printf("%d ", graydata[i]);
}
threshold = argc>2 ? atoi(argv[2]) : 0;
printf("detecting with threshold = %d\n", threshold);
fdlib_detectfaces(graydata, w, h, threshold);
n = fdlib_getndetections();
if (n==1)
printf("%d face found\n", n);
else
printf("%d faces found\n", n);
for (i=0; i<n; i++)
{
fdlib_getdetection(i, x+i, y+i, size+i);
printf("x:%d y:%d size:%d\n", x[i], y[i], size[i]);
}
delete[] graydata;
delete bi;
}
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: casio (статус: Посетитель)
Вопрос отправлен: 3 мая 2012, 12:09
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 16; последнее сообщение — 4 мая 2012, 20:14; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 3 мая 2012, 13:03 [#1]:
Нахрена что-то переделывать на delphi, когда можно просто написать с нуля?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 3 мая 2012, 13:15 [#2]:
Админ, чо с движком? Перестали отображаться аватары и кнопки форматирования текста.
Основной браузер - FF11, проверял ещё в Опере - та же фигня.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
casio (статус: Посетитель), 3 мая 2012, 13:27 [#3]:
min@y™ : тяжеловато с нуля,был бы алгоритм ( использую для грабера компонент DSPAck
|
|
min@y™ (статус: Доктор наук), 3 мая 2012, 13:36 [#4]:
Цитата:
тяжеловато с нуля,был бы алгоритм
Это означает, что ты не знаешь, что делает данный код?
Програмист для того и работает, чтобы: 1) придумать алгоритм для решения задачи; 2) написать и отладить код этого алгоритма.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
casio (статус: Посетитель), 3 мая 2012, 13:48 [#5]:
min@y™: я знаю что делает код,для этого и выложил exe, коде в с-ном описан метод поиска лица,я не пойму порядок что за чем
|
|
min@y™ (статус: Доктор наук), 3 мая 2012, 14:02 [#6]:
Ну и как переводить-то? Тут используются специфические классы и функции, которые ХЗ, есть ли в delphi. Если они доступны из каких-то DLL, то где их описание?
Ну хорошо, я попробую вчерновую (в лоб) перевести щас эту писанину на паскаль, но не думаю, что это поможет.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
casio (статус: Посетитель), 3 мая 2012, 14:12 [#8]:
minay ^ спасибо что откликнулись
|
|
min@y™ (статус: Доктор наук), 3 мая 2012, 14:30 [#9]:
program p6112;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
{int i, n, x[256], y[256], size[256], w, h, threshold;
BMPImg *bi;
unsigned char *bgrdata, *graydata;}
i, n, w, h, threshold: Integer;
x, y, size: array[0..255] of Integer;
bgrdata, graydata: array of Byte;
begin
(*
if (argc==1)
{
printf("usage: fdtest bmpfilename [threshold]\n");
exit(0);
}
*)
if ParamCount = 1
then begin
WriteLn('usage: fdtest bmpfilename [threshold]\n');
Halt(0);
end;
(*
bi = new BMPImg();
printf("\nloading %s\n", argv[1]);
bi->Load(argv[1]);
w = bi->GetWidth();
h = bi->GetHeight();
printf("image is %dx%d pixels\n", w, h);
bgrdata = bi->GetImg();
graydata = new unsigned char[w*h];
*)
bi:= BMPImg.Create();
WriteLn(#13#10'loading ', ParamStr(1));
bi.Load(ParamStr(1));
w:= bi.GetWidth();
h:= bi.GetHeight();
WriteLn('image is ', w, 'x', h, ' pixels');
bgrdata:= bi.GetImg(); // <-- Внутри метода должно быть выделение памяти
SetLength(graydata, w * h);
(*
for (i=0; i<w*h; i++)
{
graydata[i] = (unsigned char) ((.11*bgrdata[3*i] + .59*bgrdata[3*i+1] + .3*bgrdata[3*i+2]));
//if (i<10) printf("%d ", graydata[i]);
}
*)
for i:= 0 to w * h - 1 do
graydata[i]:= Byte(0.11 * graydata[i] + 0.59 * bgrdata[3 * i + 1] + 0.3 * bgrdata[3 * i + 2]);
(*
threshold = argc>2 ? atoi(argv[2]) : 0;
printf("detecting with threshold = %d\n", threshold);
fdlib_detectfaces(graydata, w, h, threshold);
*)
if ParamCount > 2
then threshold:= StrToInt(ParamStr(2))
else threshold:= 0;
WriteLn('detecting with threshold = ', threshold);
fdlib_detectfaces(graydata, w, h, threshold);
(*
n = fdlib_getndetections();
if (n==1)
printf("%d face found\n", n);
else
printf("%d faces found\n", n);
*)
n = fdlib_getndetections();
if n = 1
then WriteLn(n, ' face found')
else WriteLn(n, ' faces found');
(*
for (i=0; i<n; i++)
{
fdlib_getdetection(i, x+i, y+i, size+i);
printf("x:%d y:%d size:%d\n", x[i], y[i], size[i]);
}
*)
for i:= 0 to n - 1 do
begin
fdlib_getdetection(i, x + i, y + i, size + i);
WriteLn('x:', x[i], ' y:', y[i], ' size:', size[i]);
end;
(*
delete[] graydata; // при использовании динмассивов delphi - не нужно
delete bi; // при использовании динмассивов delphi - не нужно
*)
end.
Ну и чего? Легче стало?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
casio (статус: Посетитель), 3 мая 2012, 14:36 [#10]:
minay: спасибо за помощь, но скорее всего легче не стало...(
|
|
min@y™ (статус: Доктор наук), 3 мая 2012, 14:55 [#11]:
Ну я ж предупреждал, ёмаё...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
bugmenot (статус: 3-ий класс), 3 мая 2012, 21:10 [#12]:
не проще ли взять OpenCV и..?
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
casio (статус: Посетитель), 3 мая 2012, 21:18 [#13]:
bugmenot: OpenCV работает под С и борланд, хотя я встречал под делфи только длл-ки с С, там еще сложнее чем с нуля писать
|
|
min@y™ (статус: Доктор наук), 3 мая 2012, 21:26 [#14]:
Ну вот, видишь, я ж говорил, что с нуля ПРОЩЕ!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
bugmenot (статус: 3-ий класс), 4 мая 2012, 20:14 [#16]:
Цитата (casio):
там еще сложнее чем с нуля писать
А никто и не говорил, что распознавание лиц - простое дело. У меня на полке стоит двухтомник, ок. 800 стр + ок. 750. Вот примерно настолько «простая» задача.
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|