На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Определение цвета фото
    Цитата Писатель @
    Ну это проще.

    Это кажется простым, пока дело не дойдет до практической реализации... Уже в п.1 могут возникнуть вопросы и для этого достаточно одного контрастного пиксела. Далее начнутся вопросы в п.2 при выборе порога, что считать "достаточно близким"?
    Ярким примером будет известная иллюзия с шахматной доской, где клетки А и B имеют одинаковый цвет, хотя мы точно можем сказать какая клетка темная и какая светлая.
      Цитата DeZik @
      Рабочий пример пожалуйста


      Пример функции, переводящей RGB в HSV - можно. :)
      ExpandedWrap disabled
        type
           TClRGB = record
            R: byte;
            G: byte;
            B: byte;
           end;
           TClHSV = record
            H: real;
            S: real;
            V: real;
           end;
         
        function RGBToHSV(vxRGB: TClRGB): TClHSV;
        var
           vyHSV: TClHSV;
           maxvx, minvx: byte;
        begin
         if (vxRGB.R>=vxRGB.G) and (vxRGB.R>=vxRGB.B) then maxvx:=vxRGB.R
         else if (vxRGB.G>=vxRGB.R) and (vxRGB.G>=vxRGB.B) then maxvx:=vxRGB.G
         else if (vxRGB.B>=vxRGB.R) and (vxRGB.B>=vxRGB.G) then maxvx:=vxRGB.B;
         if (vxRGB.R<=vxRGB.G) and (vxRGB.R<=vxRGB.B) then minvx:=vxRGB.R
         else if (vxRGB.G<=vxRGB.R) and (vxRGB.G<=vxRGB.B) then minvx:=vxRGB.G
         else if (vxRGB.B<=vxRGB.R) and (vxRGB.B<=vxRGB.G) then minvx:=vxRGB.B;
         
         if minvx=maxvx then vyHSV.H:=0
         else if (maxvx=vxRGB.R) and (vxRGB.G>=vxRGB.B) then vyHSV.H:=60*(vxRGB.G-vxRGB.B)/(maxvx-minvx)
         else if (maxvx=vxRGB.R) and (vxRGB.G<vxRGB.B) then vyHSV.H:=60*(vxRGB.G-vxRGB.B)/(maxvx-minvx)+360
         else if (maxvx=vxRGB.G) then vyHSV.H:=60*(vxRGB.B-vxRGB.R)/(maxvx-minvx)+120
         else if (maxvx=vxRGB.B) then vyHSV.H:=60*(vxRGB.R-vxRGB.G)/(maxvx-minvx)+240;
         
         if maxvx=0 then vyHSV.S:=0 else vyHSV.S:=1-minvx/maxvx;
         
         vyHSV.V:=maxvx/255;
         
         Result:=vyHSV;
        end;

      А остальное - вряд ли, т.к. это сильно зависит от конкретных условий задачи. :-?

      Цитата x128 @
      Это кажется простым, пока дело не дойдет до практической реализации... Уже в п.1 могут возникнуть вопросы и для этого достаточно одного контрастного пиксела. Далее начнутся вопросы в п.2 при выборе порога, что считать "достаточно близким"?

      Это да. Но тут вряд ли можно сразу найти универсальное решение для общего случая. Надо хотя бы знать, что это за сканы на входе. Если это какие-то фотографии или иллюстрации, то, возможно, что чисто чёрного и белого на них вобще не будет. И тогда этот алгоритм тоже не подойдёт.
        Цитата Писатель @
        S - контраст, V - яркость, H можно игнорировать.

        С каких это пор?
        H - Hue (цветовой тон), S - Saturation (насыщенность), V - Value (значение цвета, яркость)
        https://ru.wikipedia.org/wiki/HSV_(%D1%86%D...B5%D0%BB%D1%8C)
        Какой у одной точки может быть контраст?
        Контраст это по определению разность между чем-то.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0315 ]   [ 16 queries used ]   [ Generated: 29.03.24, 10:56 GMT ]