Вверх ↑
Этот топик читают: Гость
Ответов: 519
Рейтинг: 28
#1: 2011-02-07 08:37:09 ЛС | профиль | цитата
Ну как же я без вас) , думаю уже делалось но не нашла, а может плохо искала...
Как сделать, обработку текущего изображения с рабочего стола и сверку его с базой изображений программы.

вот пример:

---
В голову пришло только задать стандартный скриншот, и снимать скриншоты и как нибудь их сверять, только вот как, да и область должна быть не весь рабочий стол, а 7 заданного размера..и проверять с базой совпадения именно в них..
карма: 0

0
Ответов: 8926
Рейтинг: 823
#2: 2011-02-07 10:57:18 ЛС | профиль | цитата
zeta211, если искомые области могут располаготься на любом месте экрана, то надо искать по всему экрану -- много считать придётся, если только в определённом месте, задача упростится, на форуме неоднократно сравнивали картинки
карма: 19

0
Ответов: 519
Рейтинг: 28
#3: 2011-02-07 11:38:03 ЛС | профиль | цитата
Надо будет только в определеных местах,и желательно что бы искомые места можно было задать вручную, допустим перетащить её чтоли и после этого координаты сохранялись бы в ini, все области одинакового размера.. сравнивать картинки это одно, а вот с областями у меня никак..
карма: 0

0
Ответов: 8926
Рейтинг: 823
#4: 2011-02-07 18:58:27 ЛС | профиль | цитата
zeta211, жаль у Вас почта не обозначена, выслал бы
------------ Дoбавленo в 19.01:
вот схема

Add(MainForm,12615490,77,14)
{
Name="form"
Position=1
}
Add(ODialog,11212615,364,14)
{
StartDir="Мои документыМои рисунки"
link(onExecute,16213337:doLoad,[])
}
Add(Image,12720702,238,14)
{
Left=5
Top=5
Width=180
Height=135
Color=12639424
}
Add(Image,3881204,448,14)
{
Left=200
Top=5
Width=180
Height=135
Color=12639424
}
Add(Button,569847,133,14)
{
Left=65
Top=150
Caption="Copy"
link(onClick,6082660:doCopy,[])
}
Add(Button,1260619,322,14)
{
Left=255
Top=150
Caption="Open"
link(onClick,11212615:doExecute,[])
}
Add(Button,14869059,133,63)
{
Left=65
Top=200
Caption="Compare"
link(onClick,8209910:doEvent1,[])
}
Add(PictureStream,16213337,406,14)
{
link(onLoad,3881204:doLoad,[])
}
Add(Resize,10831970,238,91)
{
Width=256
Height=256
link(onResult,3387299:doLoad,[])
link(Bitmap,15577640:Var2,[])
}
Add(Resize,9213604,448,77)
{
Width=256
Height=256
link(onResult,3624391:doLoad,[])
link(Bitmap,9430569:Var2,[])
}
Add(ToRGB,4245840,329,182)
{
link(onResult,14953827:doGetPixel,[])
}
Add(Bitmap,3387299,287,91)
{
}
Add(Img_GetPoint,13995015,287,182)
{
link(onGetPixel,4245840:doGetRGB,[])
link(Bitmap,3387299:Bitmap,[])
link(X,16645285:Var2,[])
link(Y,9071818:Var2,[])
}
Add(ToRGB,6601163,532,182)
{
link(onResult,11701794:doOperation,[(576,188)(576,221)(317,221)(317,258)])
}
Add(Bitmap,3624391,490,77)
{
}
Add(Img_GetPoint,14953827,490,182)
{
link(onGetPixel,6601163:doGetRGB,[])
link(Bitmap,3624391:Bitmap,[])
link(X,16645285:Var3,[(503,166)])
link(Y,9071818:Var3,[(510,159)])
}
Add(Hub,8209910,203,63)
{
OutCount=6
link(onEvent1,14841190:doStart,[])
link(onEvent2,8708328:doEvent1,[])
link(onEvent3,9213604:doResize,[])
link(onEvent4,8998805:doEvent1,[])
link(onEvent5,10831970:doResize,[])
link(onEvent6,3507623:doFor,[(229,104)(229,139)(149,139)(149,188)])
}
Add(TimeCounter,14841190,707,63)
{
link(onStop,8013408:doString,[])
}
Add(FormatStr,8013408,749,70)
{
Mask="Похожи на %1 процентов (за %2 мсек)"
link(onFString,8957200:doText,[])
link(Str1,1618907:Result,[(755,58)(743,58)(743,528)(377,528)])
}
Add(Label,8957200,791,70)
{
Left=145
Top=200
Caption=""
}
Add(For,3507623,161,182)
{
End=255
link(onEvent,3433992:doFor,[])
link(onStop,14103191:doEvent1,[(200,195)(200,233)(162,233)(162,454)])
}
Add(For,3433992,238,182)
{
End=255
link(onEvent,13995015:doGetPixel,[])
}
Add(GetDataEx,9071818,301,154)
{
Angle=3
link(Data,3507623:Position,[(208,159)(208,225)(167,225)])
}
Add(GetDataEx,16645285,294,161)
{
Angle=3
link(Data,3433992:Position,[(280,166)(280,190)(244,190)])
}
Add(Resize,8131619,357,84)
{
Width=1
Height=1
link(onResult,1077766:doLoad,[])
link(Bitmap,15577640:Var3,[(363,54)])
}
Add(Bitmap,1077766,399,84)
{
}
Add(ToRGB,2656951,441,126)
{
}
Add(Hub,8998805,329,84)
{
link(onEvent1,8131619:doResize,[])
link(onEvent2,15181935:doGetPixel,[(351,97)(351,132)])
}
Add(Img_GetPoint,15181935,399,126)
{
link(onGetPixel,2656951:doGetRGB,[])
link(Bitmap,1077766:Bitmap,[])
}
Add(GetDataEx,15577640,238,49)
{
link(Data,12720702:ImageBitmap,[])
}
Add(Resize,11126654,567,70)
{
Width=1
Height=1
link(onResult,11554177:doLoad,[])
link(Bitmap,9430569:Var3,[(573,54)])
}
Add(Bitmap,11554177,609,70)
{
}
Add(ToRGB,4899892,651,112)
{
}
Add(Hub,8708328,539,70)
{
link(onEvent1,11126654:doResize,[])
link(onEvent2,1783920:doGetPixel,[(561,83)(561,118)])
}
Add(Img_GetPoint,1783920,609,112)
{
link(onGetPixel,4899892:doGetRGB,[])
link(Bitmap,11554177:Bitmap,[])
}
Add(GetDataEx,9430569,448,49)
{
link(Data,3881204:ImageBitmap,[])
}
Add(Math,11701794,329,252)
{
OpType=1
ResultType=0
link(onResult,8234687:doOperation,[])
link(Op1,4245840:R,[])
link(Op2,2656951:R,[(342,234)(447,234)])
}
Add(Math,8234687,371,252)
{
OpType=1
ResultType=0
link(onResult,12257959:doOperation,[])
link(Op1,4245840:G,[(377,228)(342,228)])
link(Op2,2656951:G,[(384,239)(454,239)])
}
Add(Math,12257959,413,252)
{
OpType=1
ResultType=0
link(onResult,16308819:doOperation,[])
link(Op1,4245840:B,[(419,223)(349,223)])
link(Op2,2656951:B,[(426,243)(461,243)])
}
Add(Math,16308819,532,252)
{
OpType=1
ResultType=0
link(onResult,443745:doOperation,[])
link(Op1,6601163:R,[])
link(Op2,4899892:R,[(545,235)(657,235)])
}
Add(Math,443745,574,252)
{
OpType=1
ResultType=0
link(onResult,16088105:doOperation,[])
link(Op1,6601163:G,[(580,229)(545,229)])
link(Op2,4899892:G,[(587,241)(664,241)])
}
Add(Math,16088105,616,252)
{
OpType=1
ResultType=0
link(onResult,3622494:doOperation,[(660,258)(660,288)(171,288)(171,349)])
link(Op1,6601163:B,[(622,223)(552,223)])
link(Op2,4899892:B,[(629,246)(671,246)])
}
Add(Math,5028777,329,343)
{
OpType=11
Op2=2
ResultType=0
link(onResult,8760589:doOperation,[])
link(Op1,10661857:Var2,[])
}
Add(Math,8760589,371,343)
{
OpType=11
Op2=2
ResultType=0
link(onResult,1800049:doOperation,[])
link(Op1,5560861:Var2,[])
}
Add(Math,1800049,413,343)
{
OpType=11
Op2=2
ResultType=0
link(onResult,892074:doOperation,[])
link(Op1,10528755:Var2,[])
}
Add(Math,892074,532,343)
{
OpType=11
Op2=2
ResultType=0
link(onResult,6905114:doOperation,[])
link(Op1,8491381:Var2,[])
}
Add(Math,6905114,574,343)
{
OpType=11
Op2=2
ResultType=0
link(onResult,3968754:doOperation,[])
link(Op1,14072123:Var2,[])
}
Add(Math,3968754,616,343)
{
OpType=11
Op2=2
ResultType=0
link(onResult,5455432:doOperation,[(660,349)(660,377)(170,377)(170,405)])
link(Op1,13877568:Var2,[])
}
Add(Math,3622494,182,343)
{
OpType=2
ResultType=0
link(onResult,1401468:doOperation,[])
link(Op1,10661857:Var1,[(188,292)])
link(Op2,8491381:Var1,[(195,299)])
}
Add(Math,1401468,224,343)
{
OpType=2
ResultType=0
link(onResult,303655:doOperation,[])
link(Op1,5560861:Var1,[(230,306)])
link(Op2,14072123:Var1,[(237,313)])
}
Add(Math,303655,266,343)
{
OpType=2
ResultType=0
link(onResult,5028777:doOperation,[])
link(Op1,10528755:Var1,[(272,320)])
link(Op2,13877568:Var1,[(279,327)])
}
Add(GetDataEx,10661857,329,287)
{
link(Data,11701794:Result,[])
}
Add(GetDataEx,8491381,532,294)
{
link(Data,16308819:Result,[])
}
Add(GetDataEx,5560861,371,301)
{
link(Data,8234687:Result,[])
}
Add(GetDataEx,14072123,574,308)
{
link(Data,443745:Result,[])
}
Add(GetDataEx,10528755,413,315)
{
link(Data,12257959:Result,[])
}
Add(GetDataEx,13877568,616,322)
{
link(Data,16088105:Result,[])
}
Add(Math,5455432,182,399)
{
ResultType=0
link(onResult,11319297:doOperation,[])
link(Op1,3622494:Result,[])
link(Op2,1401468:Result,[(195,382)(230,382)])
}
Add(Math,11319297,224,399)
{
ResultType=0
link(onResult,12882821:doOperation,[])
link(Op1,303655:Result,[(230,387)(272,387)])
}
Add(Math,12882821,266,399)
{
ResultType=0
Point(doClear)
link(onResult,11252729:doOperation,[])
link(Op2,7712590:Var3,[(279,387)(303,387)(303,437)])
}
Add(Math,11252729,329,399)
{
ResultType=0
link(onResult,8406888:doOperation,[])
link(Op1,5028777:Result,[])
link(Op2,8760589:Result,[(342,381)(377,381)])
}
Add(Math,8406888,371,399)
{
ResultType=0
link(onResult,6844212:doOperation,[])
link(Op1,1800049:Result,[(377,387)(419,387)])
}
Add(Math,6844212,413,399)
{
ResultType=0
Point(doClear)
link(onResult,4466536:doOperation,[])
link(Op2,3875614:Var3,[(426,387)(453,387)(453,437)])
}
Add(Math,4466536,532,399)
{
ResultType=0
link(onResult,2901613:doOperation,[])
link(Op1,892074:Result,[])
link(Op2,6905114:Result,[(545,383)(580,383)])
}
Add(Math,2901613,574,399)
{
ResultType=0
link(onResult,167833:doOperation,[])
link(Op1,3968754:Result,[(580,387)(622,387)])
}
Add(Math,167833,616,399)
{
ResultType=0
Point(doClear)
link(Op2,8807426:Var3,[(629,387)(654,387)(654,444)])
}
Add(MathParse,1618907,371,483)
{
DataCount=3
MathStr="(%1/sqrt(%2)/sqrt(%3))*100"
ResultType=0
link(onResult,14841190:doStop,[(687,489)(687,76)])
link(X1,7712590:Var2,[(377,445)(272,445)])
link(X2,3875614:Var2,[(384,445)(419,445)])
link(X3,8807426:Var2,[(391,452)(622,452)])
}
Add(GetDataEx,3875614,413,432)
{
link(Data,6844212:Result,[])
}
Add(GetDataEx,8807426,616,439)
{
link(Data,167833:Result,[])
}
Add(Hub,14103191,182,448)
{
OutCount=4
link(onEvent1,1618907:doCalc,[(284,454)(284,489)])
link(onEvent2,12882821:doClear,[(261,461)(261,412)])
link(onEvent3,6844212:doClear,[(408,468)(408,412)])
link(onEvent4,167833:doClear,[(611,475)(611,412)])
}
Add(GetDataEx,7712590,266,432)
{
link(Data,12882821:Result,[])
}
Add(Img_Copy,6082660,182,14)
{
X=171
Y=78
Width=32
Height=32
DrawSource=1
Point(Width)
Point(Height)
link(onCopy,12720702:doLoad,[])
}
------------ Дoбавленo в 19.03:
а вот картинкаcompare.jpg
карма: 19

0
файлы: 1compare.jpg [22.1KB] [204]
Ответов: 519
Рейтинг: 28
#5: 2011-02-08 01:33:29 ЛС | профиль | цитата
сложно... мало что поняла, но буду разбираться..
------------ Дoбавленo в 01.38:
А можно в схему подсказки вбить где и что?
карма: 0

0
Ответов: 8926
Рейтинг: 823
#6: 2011-02-08 09:59:35 ЛС | профиль | цитата
zeta211, алгоритм: открываем две картинки (в данном случае первая копируется с заранее определённого места экрана),
------------ Дoбавленo в 09.59:
обе картинки приводятся к одному размеру (256х256 -- чем больше этот размер, тем точнее результат, но дольше вычисления),
------------ Дoбавленo в 09.59:
для получения среднего цвета каждой картинки, они дополнително приводятся к размеру 1х1 далее попиксельное сравнение
------------ Дoбавленo в 09.59:
цветов с получением коэффициента корреляции по Пирсону (формулу не привожу т. к. её надо рисовать картинкой )
карма: 19

0
Ответов: 519
Рейтинг: 28
#7: 2011-02-08 10:48:56 ЛС | профиль | цитата
Леонид , хм.. схема для меня трудна , вечером выложу сюда более детальную схему, с скринами. облостей должно быть 7 ... и сравнение не с одной картинкой , а с ... эх сколько же их там!? .. 52.. это изначальный этап , программу всю я не потяну , да и даже первый этот этап с ним запоролась, хочу для себя и собственного удобства, но вот никак,
аналогов не существует. Буду очень признательна если поможете с вооплощением.
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#8: 2011-02-08 11:30:50 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-05 04:18:55
карма: 0

0
Ответов: 8926
Рейтинг: 823
#9: 2011-02-08 11:32:52 ЛС | профиль | цитата
"Здесь был Вася!"
карма: 19

0
Ответов: 519
Рейтинг: 28
#10: 2011-02-08 12:22:53 ЛС | профиль | цитата
Выдалось свободных полчасика..
Вот изображение ..
Коментировать не буду ) и так все понятно ^_^
Остальной алгоритм в голове крутиться, а вот как брать именно эти области и сравнивать их с стеком изображений для получения текста ... незнаю, или слишком заморочено(
карма: 0

0
Ответов: 8926
Рейтинг: 823
#11: 2011-02-08 13:13:24 ЛС | профиль | цитата
zeta211, узнавать надо карты по обозначенным областям? Это Вы их выделили? Искать местоположение карт надо-ли?
------------ Дoбавленo в 13.12:
или оно всегда одно и то же? или сами будете выделять? Скиньте мне на почту
------------ Дoбавленo в 13.13:
( a l i n a 3 собака c o m 2 c o m . ru -- без пропусков ) рисунки всех карт.

------------ Дoбавленo в 13.13:
(Я человек не азартный, и не потому, что я не азартный, а потому, что я чуть-чуть помню теорию вероятностей
------------ Дoбавленo в 13.13:
умноженную на количество лохотронов )
карма: 19

0
Ответов: 12
Рейтинг: -1
#12: 2011-02-08 17:14:52 ЛС | профиль | цитата
[offtop]классный авик [/offtop]
карма: 0

0
Ответов: 1058
Рейтинг: 76
#13: 2011-02-08 17:22:35 ЛС | профиль | цитата
08111978 писал(а):
классный авик


Такие выражения здесь не уместны.
Соблюдайте правила форума.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#14: 2011-02-08 20:55:11 ЛС | профиль | цитата
zeta211 писал(а):
сравнивать картинки это одно

------------ Дoбавленo в 20.55:
Леонид писал(а):
узнавать надо карты по обозначенным областям?
я бы вообще не сравнивал - каждой карте присвоить имя (номер) и работать с ними. Как во всех карточных компьютерных играх.
Например K1I5 -король бубновый игрок 1-й, K3I4 - король крестовый игрок четвертый.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8926
Рейтинг: 823
#15: 2011-02-08 21:17:25 ЛС | профиль | цитата
Tad, а в преферансе первая масть - пики Полагаю, коллега zeta211 не ищет лёгких путей
карма: 19

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