Конференция "Media" » Быстрое сравнение двух рисунков [D7, WinXP]
 
  • Дрон (24.09.10 08:58) [20]
    > EPaul   (23.09.10 12:46) [16]

    Вот блог автора этих быстрых функций - http://www.guildalfa.ru/alsha/.
    Спроси у него.
  • Плохиш © (24.09.10 10:57) [21]

    > EPaul   (24.09.10 01:11) [19]


    > Плохиш У меня не получается скачать по ссылке CompareMemBV14.
    > zip  Выдает ошибку 404  файл не найден.

    В гугле это ищется за 10 секунд.
  • DVM © (24.09.10 12:01) [22]

    > EPaul   (24.09.10 01:11) [19]


    > Но что-то я уже разуверился , что в делфи это можно сделать.
    >     

    Если ты не можешь, это не значит, что этого сделать нельзя. И Делфи тут не при чем.
    Сделать можно многое. Правда путь ты выбрал не самый лучший, все же просто периодически сканировать все изображение - не выход. Тут вероятно драйвер нужен для обнаружения изменений с минимальной загрузкой.
    Тебе же посоветовал бы отказаться от TBitmap в пользу TFastDIB (поищи в интернет). В ней проход по пикселам можно выполнить гораздо быстрее.
  • DVM © (24.09.10 12:57) [23]

    > EPaul

    http://msdn.microsoft.com/en-us/library/ff568319(VS.85).aspx

    что то типа того тебе надо.
  • DVM © (24.09.10 13:08) [24]

    > EPaul

    Вот тебе еще одна небольшая вводная http://www.inf.tsu.ru/library/Publications/2005/43.pdf если хочешь конечно серьезно этой темой заняться.

    Больше помочь ничем не могу, вопросом создания mirror драйверов не занимался, это вон к Eraser надо обращаться.
  • EPaul (25.09.10 15:50) [25]
    DVM  Спасибо всем за ответы. На Vingrad мне дали один замечательный код. Сейчас занимаюсь его перевариванием.  Тема пока не закрыта.
  • EPaul (25.09.10 15:59) [26]
    DVM  Написание драйверов - это супер. Может быть, когда нибудь... а пока, что-нибудь попроще.
  • grisme © (10.10.10 10:12) [27]
    EPaul   (25.09.10 15:59) [26]

    при соединении, можно передать изображение всего экрана, а потом:
    - отлавливать получения фокуса окошками.
    - следить за курсором(движения, нажатия), быстро расчитывать в какой "зоне" он проходит/нажимает и отправлять эту зону на перерисовку.
    - точно так же с клавиатурой.
    - и т.д., чем больше "оконных" и мыше-клавных сообщений отлавливать, тем больше будет "правильных" корректировок зон.

    нутыпонел. хуки такие хуки.
  • han_malign (11.10.10 18:00) [28]
    по поводу сравнения:

      pitch:= (cmPredBufBMP.Width * BytesPerPixel + 3) and not 3;
      size:= pitch * cmPredBufBMP.Height;
      if( not CompareMem(cmPredBufBMP.Scanline[0], cmCurrBufBMP.Scanline[0], size) )then begin
         ...
      end;



    > нутыпонел. хуки такие хуки.

    - при выводе анимации никак пользовательских действий не происходит...

    Сравнение полного кадра экрана с предыдущим, по отношению к времени скриншота(копирования из видеопамяти) - занимает меньше 1%... Если использовать зеркальный драйвер(из готовых условно бесплатных, DFMirage - например) - сравнимо. У меня больше 90% времени ZLib отжирает, но если предварительно дельта и RLE сжатие сделать, вытягивает кадров 10-15 в секунду при 10% загрузке CPU...
  • Студент (03.02.11 14:07) [29]

    > Дроблю экран разрешением 1680х1050 на кусочки 50х50 пикселей
    > получается 714 кусочков.


    О, ужас... Зачем?? Тратить время на разбитие картинки, чтоб потом спотыкаться об огромное количество фрагментов? Так только тормозить всё...

    Цель какая? Пересылать изменения экрана на удалённый комп? Дык попробуйте делать XOr а потом Хаффманом... И всё, можно отсылать изменения...
  • Студент (27.06.13 16:46) [30]
    hgjgh
  • scharkhowa (12.11.13 17:35) [31]
    http://www.str-plus.ru/
    Сравнение полного кадра экрана с предыдущим, по отношению к времени скриншота(копирования из видеопамяти) - занимает меньше 1%... Если использовать зеркальный драйвер(из готовых условно бесплатных, DFMirage - например) - сравнимо. У меня больше 90% времени ZLib отжирает, но если предварительно дельта и RLE сжатие сделать, вытягивает кадров 10-15 в секунду при 10% загрузке CPU...

    Ну если только попробовать сделать сжатие
  • Juggernaut (03.12.13 14:53) [32]
    > Попиксельный метод сравнения 2 bitmap не подходит

    А другого не бывает, мил-человек! =)))
    По крайней мере если нужно 100% точное соответствие, а не частичное.

    > очень медленно

    Если через усовершенствованный аналог CompareMem() - жутко быстро.

    > Дык попробуйте делать XOr а потом Хаффманом...
    Любопытно. А TeamViewer делает пачкой из 4-х скринов, каждый из которых... Как бы это... Строка, 3 пропущены, строка, 3 пропущены. И каждый скрин есть 4-я часть оригинала.
 
Конференция "Media" » Быстрое сравнение двух рисунков [D7, WinXP]
Есть новые Нет новых   [134427   +38][b:0][p:0.001]