Вверх ↑
Этот топик читают: Гость
Ответов: 6
Рейтинг: 0
#1: 2019-10-14 20:21:38 ЛС | профиль | цитата
подскажите плиз куда копать, информацию не нашел, либо это чертовски просто и я это не вижу, или наоборот.
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 314
Рейтинг: 8
#2: 2019-10-14 20:56:20 ЛС | профиль | цитата
Если сравнение на наличие одинаковых в папке, то по размеру файла или компонент Hashsum (md5, sha / crc).
карма: 1

0
Ответов: 8593
Рейтинг: 795
#3: 2019-10-14 21:29:29 ЛС | профиль | цитата
unflappable, термин "сравнение" поясните
карма: 18

0
Ответов: 6
Рейтинг: 0
#4: 2019-10-15 10:53:24 ЛС | профиль | цитата
сравнить по изображению что бы одинаковые были
карма: 0

0
Ответов: 8593
Рейтинг: 795
#5: 2019-10-15 12:25:48 ЛС | профиль | цитата
unflappable,
% одинаковости


Add(MainForm,2953706,70,154)
{
}
Add(Image,3103349,315,140)
{
Left=15
Top=10
Width=160
Height=120
link(Bitmap,14220082:Var1,[(321,131)])
}
Add(Button,16440372,70,70)
{
Left=55
Top=135
Caption="Open"
link(onClick,4279148:doExecute,[])
}
Add(Button,328640,70,252)
{
Left=260
Top=135
Caption="Open"
link(onClick,10263100:doExecute,[])
}
Add(PictureStream,12688607,168,70)
{
link(onLoad,3019949:doResize,[])
}
Add(ODialog,4279148,119,70)
{
link(onExecute,12688607:doLoad,[])
}
Add(Bitmap,11598065,329,77)
{
HWidth=160
HHeight=120
Point(doCreate)
}
Add(Resize,3019949,217,70)
{
Width=160
Height=120
link(onResult,7924196:doEvent1,[])
}
Add(Hub,7924196,259,70)
{
OutCount=6
link(onEvent1,3455203:doClear,[(403,76)(403,111)])
link(onEvent2,11598065:doLoad,[])
link(onEvent3,3103349:doLoad,[(305,90)(305,146)])
link(onEvent4,2752835:doWrite,[(298,97)(298,174)])
link(onEvent5,4293311:doWork1,[(291,104)])
link(onEvent6,1259030:doEvent1,[(284,111)(284,181)(452,181)(452,174)])
}
Add(PictureStream,9400819,168,252)
{
link(onLoad,13889053:doResize,[])
}
Add(ODialog,10263100,119,252)
{
link(onExecute,9400819:doLoad,[])
}
Add(Resize,13889053,217,252)
{
Width=160
Height=120
link(onResult,12064197:doEvent1,[])
}
Add(Hub,12064197,259,252)
{
OutCount=6
link(onEvent1,2702869:doClear,[(397,258)(397,286)])
link(onEvent2,9273701:doLoad,[])
link(onEvent3,16148713:doLoad,[(305,272)(305,328)])
link(onEvent4,8070695:doWrite,[(298,279)(298,363)])
link(onEvent5,13547663:doWork1,[(291,286)])
link(onEvent6,9184790:doEvent1,[(284,293)(284,370)(452,370)(452,363)])
}
Add(Image,16148713,315,322)
{
Left=210
Top=10
Width=160
Height=120
link(Bitmap,15214306:Var1,[(321,313)])
}
Add(Bitmap,9273701,322,259)
{
HWidth=160
HHeight=120
Point(doCreate)
}
Add(BitmapStream,8070695,413,350)
{
link(Stream,11964908:Var2,[])
link(Bitmap,15214306:Var3,[(426,341)(356,341)(356,313)])
}
Add(MemoryStream,2702869,413,273)
{
Point(doPosition)
}
Add(GetDataEx,15214306,322,308)
{
link(Data,9273701:Bitmap,[])
}
Add(BitmapStream,2752835,413,161)
{
link(Stream,12312361:Var2,[])
link(Bitmap,14220082:Var3,[(426,152)(356,152)(356,131)])
}
Add(MemoryStream,3455203,413,98)
{
Point(doPosition)
}
Add(Button,552427,189,469)
{
Left=155
Top=170
Caption="Compare"
Data=Integer(0)
link(onClick,8747043:doEvent1,[])
}
Add(DataToFile,6031599,560,175)
{
link(onGet,5016157:doOperation,[])
link(Stream,12312361:Var3,[(566,145)])
}
Add(DoData,14095849,364,287)
{
Data=Integer(0)
link(onEventData,2702869:doPosition,[])
}
Add(For,10814525,497,182)
{
IncludeEnd=1
link(onEvent,6031599:doGet,[])
link(onStop,8054769:doOperation,[(539,195)(539,237)])
link(End,12110445:Var1,[(510,166)])
}
Add(GetDataEx,12312361,413,140)
{
link(Data,3455203:Stream,[])
}
Add(Hub,1259030,469,168)
{
link(onEvent1,5016157:doClear,[(599,174)(599,188)])
link(onEvent2,10814525:doFor,[(491,181)(491,188)])
}
Add(Math,5016157,616,175)
{
ResultType=0
Point(doClear)
link(Op1,9951225:Var3,[(622,166)(608,166)])
}
Add(Math,8054769,602,231)
{
OpType=3
link(Op1,9951225:Var2,[])
link(Op2,12110445:Var3,[(615,222)(552,222)(552,166)])
}
Add(GetDataEx,9951225,602,210)
{
Angle=1
link(Data,5016157:Result,[(622,215)])
}
Add(GetDataEx,12110445,518,161)
{
link(Data,3455203:Size,[(524,136)(426,136)])
}
Add(DoData,1262809,364,112)
{
Data=Integer(0)
link(onEventData,3455203:doPosition,[])
}
Add(GetDataEx,14220082,329,126)
{
link(Data,11598065:Bitmap,[])
}
Add(DataToFile,3890352,560,364)
{
link(onGet,5526098:doOperation,[])
link(Stream,11964908:Var3,[(566,327)])
}
Add(For,393083,497,371)
{
IncludeEnd=1
link(onEvent,3890352:doGet,[])
link(onStop,15931266:doOperation,[(539,384)(539,426)])
link(End,11649046:Var2,[])
}
Add(Hub,9184790,469,357)
{
link(onEvent1,5526098:doClear,[(599,363)(599,377)])
link(onEvent2,393083:doFor,[(491,370)(491,377)])
}
Add(Math,5526098,616,364)
{
ResultType=0
Point(doClear)
link(Op1,6064515:Var3,[(622,355)(608,355)])
}
Add(Math,15931266,602,420)
{
OpType=3
link(Op1,6064515:Var2,[])
link(Op2,265196:Var3,[(615,411)(552,411)(552,348)])
}
Add(GetDataEx,6064515,602,399)
{
Angle=1
link(Data,5526098:Result,[(622,404)])
}
Add(GetDataEx,265196,518,343)
{
link(Data,2702869:Size,[(524,319)(426,319)])
}
Add(GetDataEx,11964908,413,322)
{
link(Data,2702869:Stream,[])
}
Add(DataToFile,4905044,399,469)
{
link(onGet,8051061:doOperation,[])
link(Stream,12312361:Var1,[(405,145)])
}
Add(DataToFile,6634824,385,553)
{
link(onGet,4403477:doOperation,[])
link(Stream,11964908:Var1,[(391,327)])
}
Add(For,10214670,301,490)
{
IncludeEnd=1
link(onEvent,6835969:doEvent1,[])
link(onStop,547938:doOperation,[(340,503)(340,524)])
link(End,11649046:Var1,[(314,453)(449,453)(449,348)])
}
Add(Hub,6835969,350,490)
{
link(onEvent1,4905044:doGet,[(375,496)(375,482)])
link(onEvent2,6634824:doGet,[(375,503)(375,566)])
}
Add(Hub,8747043,238,469)
{
OutCount=4
link(onEvent1,4293311:doWork2,[(277,475)(277,118)])
link(onEvent2,13547663:doWork3,[(291,482)])
link(onEvent3,3724089:doEvent1,[(297,489)(297,440)])
link(onEvent4,10214670:doFor,[])
}
Add(HubEx,4293311,287,112)
{
link(onEvent,1262809:doData,[])
}
Add(HubEx,13547663,287,287)
{
link(onEvent,14095849:doData,[])
}
Add(Math,8051061,448,469)
{
OpType=1
link(onResult,12973802:doOperation,[])
link(Op2,8054769:Result,[(461,271)(608,271)])
}
Add(Math,4403477,427,553)
{
OpType=1
link(onResult,651930:doOperation,[])
link(Op2,15931266:Result,[(440,531)(608,531)])
}
Add(Math,12973802,490,469)
{
OpType=31
link(onResult,13141403:doOperation,[])
}
Add(Math,651930,476,553)
{
OpType=31
link(onResult,2293639:doOperation,[])
}
Add(Math,13141403,553,469)
{
Point(doClear)
link(Op1,4384243:Var1,[(559,460)(545,460)(545,508)])
}
Add(Math,2293639,553,553)
{
Point(doClear)
link(onResult,849815:doOperation,[])
link(Op1,11586461:Var2,[])
}
Add(Math,849815,602,553)
{
OpType=2
link(onResult,9343019:doOperation,[])
link(Op1,4403477:Result,[(608,543)(593,543)(593,600)(433,600)])
link(Op2,8051061:Result,[(615,515)(454,515)])
}
Add(Math,9343019,658,553)
{
Point(doClear)
link(Op1,1856956:Var1,[(664,544)(650,544)(650,592)])
}
Add(Math,547938,693,518)
{
OpType=2
link(onResult,13379934:doCalc,[])
link(Op1,11586461:Var3,[(699,512)(685,512)(685,537)])
link(Op2,4384243:Var3,[(706,508)])
}
Add(GetDataEx,11649046,504,343)
{
Angle=1
link(Data,265196:Var1,[])
}
Add(GetDataEx,4384243,553,503)
{
link(Data,13141403:Result,[])
}
Add(GetDataEx,11586461,553,532)
{
Angle=3
link(Data,2293639:Result,[(546,537)(546,593)(559,593)])
}
Add(GetDataEx,1856956,658,587)
{
link(Data,9343019:Result,[])
}
Add(Hub,3724089,490,434)
{
OutCount=3
link(onEvent1,9343019:doClear,[(641,440)(641,566)])
link(onEvent2,13141403:doClear,[(536,447)(536,482)])
link(onEvent3,2293639:doClear,[(529,454)(529,566)])
}
Add(MathParse,13379934,742,518)
{
MathStr="round((%1/sqrt(%2))*100,0.01)"
link(onResult,4855196:doString,[])
link(X1,1856956:Var3,[(748,509)(733,509)(733,592)])
}
Add(FormatStr,4855196,784,518)
{
DataCount=1
Mask="Картинки похожи на %1 %"
link(onFString,11138664:doText,[])
}
Add(Label,11138664,833,518)
{
Left=115
Top=205
Width=4
Height=4
Caption=""
}

карма: 18

0
Ответов: 6
Рейтинг: 0
#6: 2019-10-15 16:34:39 ЛС | профиль | цитата
огромное тебе спасибо, буду сидеть разбираться
карма: 0

0
Ответов: 8593
Рейтинг: 795
#7: 2019-10-15 20:45:25 ЛС | профиль | цитата
unflappable, чтобы полегче разбираться (самому пришлось "разбираться", шесть лет прошло) чуть помогу:
1. Обе картинки приводятся к небольшому и равному размеру.
2. Сравнение производится по-байтно по всем пикселям. Результат вычисляется по Пирсону, формула:
ПирсонаКоэф=сумма((Xi-Xср)*(Yi-Yср))/Корень(сумма((Xi-Xср)^2)*сумма((Yi-Yср)^2))
где Xi и Yi значения байтов (цветов) пикселей двух картинок
3. Средние значения и суммы квадратов вычисляются при открытии картинок.
Для ускорения процесса работа проводится не с картинками, но с их цифровым аналогом в памяти (MemoryStream)
карма: 18

1
Голосовали:Konst
Ответов: 6
Рейтинг: 0
#8: 2019-10-15 20:49:20 ЛС | профиль | цитата
Леонид,
спасибо тебе

Редактировалось 1 раз(а), последний 2019-10-15 20:49:58
карма: 0

0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)