| ||||||
![]() | ||||||
![]() | ||||||
![]() | ||||||
![]() | ||||||
Короче мужики такое дело выделение значимой детали на фотографии привлечение внимания к сюжетно важному объекту
снимка, Фиксация перципиента на: и все такое растакое прочее:.
И что это угораздило меня это вывалить? Ну положим никто про это особо и не шумел.
А если и писали так такое, что и читать не стоит.
|
Ну это вот фотоспышка хреновато конечно но зато если у вас получше будет деловое предложение...
совмещение
исходник
ну еще немного поразмываем
|
|
|---|
Ну так вот некоторые не будем говорить кто говорят что мол и фотошопои их можно в?делять
|
ХИСТОРИ
|
|
|
|
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
int gp=TrackBar3->Position+2;//ну это типа размер квадратика для опознавания чем больше тем точнее но сами понимаете краевой эффект посильнее будет
AnsiString cs,cs6;
AnsiString s,sr,sg,sb;
int fncolor_r[32][32];
int fncolor_g[32][32];
int fncolor_b[32][32]; //масивчики и стринги да сохранения всякой промежеточной ерунды
int ip1=TrackBar1->Position-(TrackBar1->Max/2);
int ip2=TrackBar2->Position-(TrackBar2->Max/2); //сдвиги фотки вверх и вбок в упор забыл что где
float C2; //Флоат
int color_r;
int color_b;
int color_g;
int sumcolor_r=0;
int sumcolor_b=0;
int sumcolor_g=0;
int szcolor_r=0;
int szcolor_b=0;
int szcolor_g=0;
int maxcolor_r=0;
int maxcolor_b=0;
int maxcolor_g=0;
int maxcolor_rx=0;
int maxcolor_bx=0;
int maxcolor_gx=0;
int maxcolor_ry=0;
int maxcolor_by=0;
int maxcolor_gy=0;
int mcolor_r[32][32];
int mcolor_g[32][32];
int mcolor_b[32][32];
int fn3color_r[32][32];
int fn3color_g[32][32];
int fn3color_b[32][32];
int kx;
int ky;
int dp=256/(gp*gp);
int jp=gp*gp;
div_t r1;
div_t r2;
div_t r3;
float C1; //ну это не важно просто принято так писать
for (int ipw=0;ipwHeight-gp;ipw++){//шарим перыю фотку по высоте
for (int ipg=0;ipgWidth-gp ;ipg++){//потом по ширине
for (int w=0;wCanvas->Pixels[kx+ip1][ky+ip2];
r1=div(C1,256); //Ну это мы цвета разделяем можно конечно сдвигами у меня с ними вроде как проблем нет но у вас могут и быть поэтому ну их на:
r3=div(C1,256*256);
r2=div(C1-(r3.quot*256*256),256);
color_r=r1.rem;
color_g=r2.quot;
color_b=r3.quot;
mcolor_r[w][g]=color_r;
mcolor_g[w][g]=color_g;
mcolor_b[w][g]=color_b;
sumcolor_r=sumcolor_r+color_r;//складываем все красные цвета чтоб потом найти средний красный по этому квадратику
sumcolor_g=sumcolor_g+color_g; //складываем все зеленые цвета чтоб потом найти средний зеленый по этому квадратику
sumcolor_b=sumcolor_b+color_b; //складываем все синие цвета чтоб потом найти средний синий по этому квадратику
}
}
sumcolor_r=sumcolor_r/jp;
sumcolor_b=sumcolor_b/jp;
sumcolor_g=sumcolor_g/jp; //и нашли ведь!
for (int w=0;w0)fncolor_r[w][g]=0; else fncolor_r[w][g]=1;
if((sumcolor_g-mcolor_g[w][g])>0)fncolor_g[w][g]=0; else fncolor_g[w][g]=1;
if((sumcolor_b-mcolor_b[w][g])>0)fncolor_b[w][g]=0; else fncolor_b[w][g]=1; //значит так если больше среднего то 1 если меньше то ноль можно и целым делением у меня с ним проблем не у вас могут и быть.
}
}
for (int w=0;wCanvas->Pixels[kx][ky];
r1=div(C1,256);
r3=div(C1,256*256);
r2=div(C1-(r3.quot*256*256),256);
color_r=r1.rem;
color_g=r2.quot;
color_b=r3.quot;
mcolor_r[w][g]=color_r;
mcolor_g[w][g]=color_g;
mcolor_b[w][g]=color_b;
sumcolor_r=sumcolor_r+color_r;
sumcolor_b=sumcolor_b+color_g;
sumcolor_g=sumcolor_g+color_b;
}
}
sumcolor_r=sumcolor_r/jp;
sumcolor_b=sumcolor_b/jp;
sumcolor_g=sumcolor_g/jp;
for (int w=0;w0)fn3color_r[w][g]=0; else fn3color_r[w][g]=1;
if((sumcolor_g-mcolor_r[w][g])>0)fn3color_g[w][g]=0; else fn3color_g[w][g]=1;
if((sumcolor_b-mcolor_r[w][g])>0)fn3color_b[w][g]=0; else fn3color_b[w][g]=1;
}
}
szcolor_r=0; //Сравниваем короче эти самые квадратики по точкам
szcolor_b=0;
szcolor_g=0;
for (int w=0;wState)Memo1->Lines->Add(IntToStr(ipg)+","+IntToStr(ipw)+","+cs6);
Image3->Canvas->Pixels[ipg][ipw]=StringToColor(cs6); //Ну там это в текстовый файл мало ли что:
}
}
//двигаем и повторяем
}
Image3->Picture->SaveToFile(Edit1->Text);
if(CheckBox1->State)Memo1->Lines->SaveToFile(Edit1->Text+".txt");
//Жапоминаем
}
//По моему так проще некуда.
это ответ одному мену он просил подробности и что же мне надо думаю и вам они будут не лишни
Здраствуйте Алексей и прстите за орфографию.
описываю...я получаю файл с кординатами XYZ и цветами точек по направлению съемки. на это дело у меня уходит очень большой ресурс ну просто очень и очень большой. и по времени (написание програмного кода) и на саму работу программы.
Один снимок это где-то 20-100 часов считанины причем требуется мое непосредственное участие для того чтобы помочь программе выйти из ситуаций в которые она вляпывается потому как код кривой, а написать лучьший уйдет ну так гдето лет 600 если при этом еще иметь группу человек в 50.
итак варианты