Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка изображения скринов с экрана 
:(
    Опции темы
Tof
Дата 13.3.2009, 04:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 6.3.2009

Репутация: нет
Всего: нет



1. Хочу начать писать Бот(поможник) Онлайн программу , вот думаю какой путь выбрать для реализации знаю , что в VB.NET есть возможность работать c пакетами но это сложно и за зашиты против подобных программ . 
2. Вот думаю может попробовать пойти другим путем , узнал что возможно снимать(поправка :программа должна сама это проделывать ) скрины с экрана и моя программа-бот распознавала их и проделывала уже какие либо логические действия (клиент , сервер) в зависимости от их изменения или на оборот 

Вопрос возможно ли реализовать последние ? Лудше  1е  или  2е  
PM MAIL ICQ   Вверх
-Mikle-
Дата 13.3.2009, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 3
Всего: 59



Что реализовать? Ничего не понятно, кроме того, что ты хочешь делать скриншоты.

Вот так можно получить скриншот:
Код

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sz As Size = Screen.PrimaryScreen.Bounds.Size
        Dim bitmap As New Bitmap(sz.Width, sz.Height)

        Dim g As Graphics = Graphics.FromImage(bitmap)
        g.CopyFromScreen(0, 0, 0, 0, sz)
        g.Dispose()

        bitmap.Save("e:\screen.jpg")
    End Sub


Остальное не понял.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Tof
Дата 13.3.2009, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 6.3.2009

Репутация: нет
Всего: нет



Цитата(-Mikle- @ 13.3.2009,  07:23)
Что реализовать? Ничего не понятно, кроме того, что ты хочешь делать скриншоты.

Вот так можно получить скриншот:
Код

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sz As Size = Screen.PrimaryScreen.Bounds.Size
        Dim bitmap As New Bitmap(sz.Width, sz.Height)

        Dim g As Graphics = Graphics.FromImage(bitmap)
        g.CopyFromScreen(0, 0, 0, 0, sz)
        g.Dispose()

        bitmap.Save("e:\screen.jpg")
    End Sub


Остальное не понял.

Уже  радует )
Есть  ли  возможность скринить только определеные  части экрана   с   интервалом   к примеру  в  2 - 3  секунды   и  считывать с них инфу   там не текст  к примеру карты ??    




Да я не  правильно обьяснил что хочу  потому ,что  сам  незнаю  как  это  реализовывается .
Попробую  обьяснить - выдумать  , а ты мне скажеш из области фантастики  это  или   всё таки  реально . Пример  сделали  скриншот   теперь нам нужно считать с него информацию   скриншот  выглядит , как  рисунок  там букв  и  цифр почти  нет  именно с рисунка  нам и нужно    с     определеной области сркиншота  получить данные  от которых   программа  и будет дальше плясать  - выполнять  то  или  иное действие  .Cкрины  она делает к  примеру каждые  5  секунд  и  уже  знает как  их читать к примеру:  на  скрине нарисован   Банан и Кокос  наша обезьяна ( "программа" )должна  выбрать Банан  так  как  Кокос  ей  не разгрысть , следуший скрин который делает программа там уже  2  Кокоса  наша Обезьяна должна  отказатца  и  пойти  и т.д и т.п  .  Или  к примеру  карты картинка  сложная , Король,Туз,Дама могут  быть  в  разном  порядке  ,  как научить программку  отличать  одно  от другова  +  действия  к примеру  играть  в дурака  с сопреником  .Карты веером  в руке  последовательность  у веера  можит быть любая   + нужна  считать  имено с конкретной   области   скрина .
Вобшем что-то  вроде  этого , но не  обезательно посредствами  скрина   это реализовывать если есть путь  короче  я  с удовольствием    хотел бы его услышать .

P.S  просьба   не воспринемать  буквально  бананы , кокос  и  обезьяну ....... это всего лиш пример   для  того чтоб  обьясить   то  что  я  незнаю  .  

Это сообщение отредактировал(а) Tof - 13.3.2009, 08:07
PM MAIL ICQ   Вверх
-Mikle-
Дата 13.3.2009, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 3
Всего: 59



Цитата(Tof @  13.3.2009,  10:51 Найти цитируемый пост)
Есть  ли  возможность скринить только определеные  части экрана

ты видимо не разбирался с примером и что к чему.
Код

        g.CopyFromScreen(0, 0, 0, 0, sz)


первые два параметра - это xy-позиция экрана с которой начнется скришот.
следующие два параметра - это xy-позиция в bitmap с которой начнется запись.
последний - размер скриншота

Цитата(Tof @  13.3.2009,  10:51 Найти цитируемый пост)
с   интервалом   к примеру  в  2 - 3  секунды

используй таймер

Насчет всего остального  smile 
Если это не фантастика, то это где-то рядом с ней.  smile 
Это из области искуственного интелекта на домашнем компьютере. Сделаешь это - Будешь милиардером!
Для примера, программы которые распознают текст с картинки уже не новость. Но даже они (их разрабатывает целая группа професионалов) НЕ на сто процентов справляются с задачей. После них, как правило, еще надо корректировать распознаный текст.

Может ты что-то другое подразумевал? Например как сделана игра солитер? Или подобные ей?
В них все сделано не скриншотами с последующим распознаванием, а логикой и реакцией на действия пользователя (клики мышкой, нажатия на клавиатуру и т.п.)...


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Tof
Дата 13.3.2009, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 6.3.2009

Репутация: нет
Всего: нет



Цитата(-Mikle- @ 13.3.2009,  08:41)
Цитата(Tof @  13.3.2009,  10:51 Найти цитируемый пост)
Есть  ли  возможность скринить только определеные  части экрана

ты видимо не разбирался с примером и что к чему.
Код

        g.CopyFromScreen(0, 0, 0, 0, sz)





  


Ты  прав  я примерно понел про ширену  и  высоту  и  побежал постить на радастях . А  вот про интрервал  я пока до этого не добрался   smile

Добавлено @ 10:03
Цитата(-Mikle- @ 13.3.2009,  08:41)


Может ты что-то другое подразумевал? Например как сделана игра солитер? Или подобные ей?
В них все сделано не скриншотами с последующим распознаванием, а логикой и реакцией на действия пользователя (клики мышкой, нажатия на клавиатуру и т.п.)...

Неее   вот знаеш к примеру  MMORPG  онлайн игра Lineage2  так  вот там  как-то  человечик сделал сам такова Бота  так вот   что -то  на подобе  кликера  выставляиш на игравом  интрфейсе   к  примеру  Атака  F1   ,  Банки  жизни  F12     Бот  работал   бе  едниого пакета   между клиентом  и сервером , а именно   с Окном  игры  и Клавиатурой   в окне  игры  нужно было тоже всё раставить  по инструкции  чётко ,Полоска  ХП ("жизнь")  тоже должна была   стоять  в определеном месте ирастянута  по определёной длине   ,  так вот  после запуска   Бот   начинал  действие    ,брал монстра    в  target   нажимал  F1  и бежал к  нему наченая  его бить ,  у тебя  выставено    в Бот  прграмме когда монстрила  снесет тебе   определеное  количество жизни , допустим   30 %   программуля жакла F12   тоесть  пить банки  жизни   , вот  как  она  определяла  ведь я точно знаю что работала она  по цветам пикселей  что-то  типо  этого

Добавлено @ 10:08
Цитата(-Mikle- @ 13.3.2009,  08:41)
 

Это из области искуственного интелекта на домашнем компьютере. Сделаешь это - Будешь милиардером!



Так быть мне  значит  МИЛИАРДЕРОМ  Создателем компьютерного зрения   ---------    ну тут дальше  смех злодея  :Бугагагага  и  я smile 

Это сообщение отредактировал(а) Tof - 13.3.2009, 10:28
PM MAIL ICQ   Вверх
Pilger
Дата 13.3.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Ну если знать, какой цвет в каком случае у тебя на экране должен быть.. Скажем если в определенном месте экрана у тебя вместо красного (жизнь), будет какой либо другой, то жми F12
С картами то же самое.. если у тебя по координатам какие то определенные цвета, то это король, если какие то другие, то это туз. Но тут проблема с расширением экрана.

Это сообщение отредактировал(а) Pilger - 13.3.2009, 17:05


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
-Mikle-
Дата 13.3.2009, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 3
Всего: 59



Цитата(Tof @  13.3.2009,  13:02 Найти цитируемый пост)
в окне  игры  нужно было тоже всё раставить  по инструкции  чётко ,Полоска  ХП ("жизнь")  тоже должна была   стоять  в определеном месте ирастянута  по определёной длине   

Ну вот если так, значит нет анализа и поиска объектов на картинке, а это - уже отсутствие "интелекта". Вот такое уже более реально воплотить в жизнь. Из области фантастики я говорил, что попробуй найди банан на фотографии программно, но если он находится в строго определенном месте и всегда одинаково выгляит, то тогда можно. Смысл в том чтобы считывать цвета пикселей, как уже сказал 
Pilger.

Эта строчка считывает цвет пикселя.
Код

    Dim pixelColor As Color
    pixelColor = bitmap.GetPixel(x, y)


Таймером пользоваться очень легко. Бросаешь его на форму в дизайнере и подвешиваешься на событие Tick. Оно будет срабатывать периодически с интервалом заданном в свойстве Interval, а старт/стоп задает свойство IsEnabled.

PS: Мой тебе совет, как начинающему, подождать немного с ботом. Задачи выше уровня понимания могут сильно навредить и запутать. Освой сначала до конца сам язык, платформу, ее возможности. Научись это все использовать, а потом уже сможешь видеть и выбирать самостоятельно пути решенния любых задач исходя из базовых условий и конкретных условий. Есть очень много других, не менее интересных задач, которые подходят начинающим и полезны в освоении. Попробуй начать с них, поверь будет легче потом.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Pilger
Дата 13.3.2009, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Кстати для этого не обязательно делать скриншот экрана. Можно брать пикселы напрямую с экрана.


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
NoNames
  Дата 14.5.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 14.5.2009

Репутация: нет
Всего: нет



Хорошая тема, для меня тоже актуальная.
;)

Цитата

Вопрос возможно ли реализовать последние ? Лудше  1е  или  2е   


Да можно. я хоть и не супер спец но знаю что это можно сделать, да еще к тому же достаточно легко.

Это сообщение отредактировал(а) NoNames - 14.5.2009, 19:47
PM MAIL   Вверх
Natapro
Дата 11.10.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 13.9.2009
Где: Украина

Репутация: нет
Всего: нет



Цитата

Вот так можно получить скриншот:Код

  
Код

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sz As Size = Screen.PrimaryScreen.Bounds.Size
        Dim bitmap As New Bitmap(sz.Width, sz.Height)

        Dim g As Graphics = Graphics.FromImage(bitmap)
        g.CopyFromScreen(0, 0, 0, 0, sz)
        g.Dispose()

        bitmap.Save("e:\screen.jpg")

    End Sub

 а как сделать чтоб после сохранения выскакивало окошко где можно было вписать имя с которым сохранить скриншот ?


--------------------
Красивая девушка не может быть глупой.Умная девушка не позволит себе быть некрасивой...
PM MAIL   Вверх
diadiavova
Дата 11.10.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Natapro @  11.10.2009,  17:24 Найти цитируемый пост)
а как сделать чтоб после сохранения выскакивало окошко где можно было вписать имя с которым сохранить скриншот ? 

Вместо такого кода
Код

        bitmap.Save("e:\screen.jpg")

Пиши так
Код

Dim ofd As New OpenFileDialog
If ofd.ShowDialog = DialogResult.OK Then
        bitmap.Save(ofd.FileName)
End If
ofd.Dispose()
Или добавь диалог в дизайнере формы и вызывай его. С этим компонентом ознакомься подробнее, обрати внимание на свойство Filter.

Добавлено через 2 минуты и 7 секунд
Ещё пара моментов, прежде чем отвечать на вопрос посмотри на дату, когда он задан. А то тут есть товарищи, поднимающие темы 4-х - 5-ти летней давности и вступающие в диалог с людьми, которые может и не появлялись на форуме с тех пор.



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Natapro
Дата 11.10.2009, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 13.9.2009
Где: Украина

Репутация: нет
Всего: нет



Код

Dim ofd As New OpenFileDialog

вродь открывает диалог открытия ? нетакли ?

а при чом тут это ?
ну я просто продолжала тему, зачем новую создавать ?


--------------------
Красивая девушка не может быть глупой.Умная девушка не позволит себе быть некрасивой...
PM MAIL   Вверх
diadiavova
Дата 11.10.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Не открывает, а создаёт. Если у тебя диалог есть в дизайнере, то создавать его таким образом не надо. 
Я перепутал кстати не OpenFileDialog а SaveFileDialog. Ну это ж понятно.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Natapro
Дата 11.10.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 13.9.2009
Где: Украина

Репутация: нет
Всего: нет



ну да я поняла ) ну там проблемка тоже... так как оно сохраняет в неизвестном формате... 


--------------------
Красивая девушка не может быть глупой.Умная девушка не позволит себе быть некрасивой...
PM MAIL   Вверх
diadiavova
Дата 11.10.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Формат определяется расширением имени файла


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.