Как получить доступ к битам изображения?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Анатолий Токарев
Прохожий
Сообщения: 4
Зарегистрирован: 25 Апрель 2006, 4:26

Как получить доступ к битам изображения?

Сообщение Анатолий Токарев »

Уважаемые коллеги, задача следующая:
1 есть web-камера 640*480
2 нужно по нажатию кнопки сделать снимок текущего изображения
3 преобразовать полученное 24 битное цветное изображение в черно-белое и построить матрицу в виде массива 640*480 элементов.

Первые два пункта реализованы без проблем, а вот с п.3 увы, ничего не получается.
Предполагалось для простоты и скорости использовать зеленую составляющую картинки для BW матрицы.
Я пытался использовать пример А.Мялина (grabber):

Код: Выделить всё

Convert         routine                                        ! 
    hdcScreen = CreateDC(Displ,0,0)
    hdcCompatible = CreateCompatibleDC(hdcScreen)
    hbmScreen = CreateCompatibleBitmap(hdcScreen,640,480)

    IF NOT hbmScreen
        MESSAGE('Error on CreateCompatibleBitmap Error!',ICON:HAND)
    END

    IF NOT SelectObject(hdcCompatible, hbmScreen)
        MESSAGE('SelectObject Error!',ICON:HAND)
    END

    IF NOT BitBlt(hdcCompatible,0,0,639,479,hdcScreen,0,0,SRCCOPY)
        MESSAGE('Screen to Compat Blt Failed','Error!',ICON:HAND)
    END

    hMemory = GlobalAlloc(GMEM_FIXED, 1920)
    message('GlobalAlloc ='&hMemory)

    loop I=0 to 479
        FirstLine = I
        NLines = 1

        RtnVal = GetDIBits(hdcCompatible, hbmScreen, FirstLine, NLines, address(OneLine), bmi, DIB_RGB_COLORS)
        message('GetDIBits='&RtnVal&', address(OneLine)='&address(OneLine))

        loop J=1 to 640
            Matrix[J,I+1] = OneLine[J]!OneLine.G[J]
        end
    END
но застрял на GetDIBits - не работает эта функция, всегда возвращает 0.
Не силен я в API, да и не писал программ давно - ослаб ;)

Может кто поможет?
А.Токарев
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

А библиотека ImageEx не может помочь?
Анатолий Токарев
Прохожий
Сообщения: 4
Зарегистрирован: 25 Апрель 2006, 4:26

Сообщение Анатолий Токарев »

Admin писал(а):А библиотека ImageEx не может помочь?
А что это за зверь и где он живет? И где взять описание?
А.Токарев
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

http://www.solidsoftware.de
посмотри по функционалу...
потом на нашем FTP смотри.
если нет или не той версии кричи! может быть народ поможетет...

Я не помню у нас куплено или нет...
Анатолий Токарев
Прохожий
Сообщения: 4
Зарегистрирован: 25 Апрель 2006, 4:26

Сообщение Анатолий Токарев »

Admin писал(а):http://www.solidsoftware.de
посмотри по функционалу...
потом на нашем FTP смотри.
если нет или не той версии кричи! может быть народ поможетет...

Я не помню у нас куплено или нет...
Ага, спасибо за совет. А где FTP? Если через приват, то у меня туда ходу нет, не получил туда доступа.
А.Токарев
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

В приват доступ сделал.
Читай тред про FTP
Анатолий Токарев
Прохожий
Сообщения: 4
Зарегистрирован: 25 Апрель 2006, 4:26

Сообщение Анатолий Токарев »

Admin писал(а):В приват доступ сделал.
Читай тред про FTP
Спасибо за приват!
Про FTP так ничего и не наше - ни в поиске, ни в FAQ. Можно носом ткнуть?

C вопросом похоже вопрос решил и без библиотеки, аж двумя способами, один правда медленный - через GetPixel,
а второй - компиляция из статьи с вашего сайта "ИЗО: рисуем в памяти и в не клиентской области" и примера А.Мялина (MSDN). Странно - не работало из-за того, что я сам (для простоты) инициализировал структуру данных. Как только сделал (чисто тупо, 1:1) как у Андрея, все заработало. Теперь нужно все причесать.

Пример, с захватом изображения с web-камеры пришлю, может еще кому понадобится.

P.S. В который раз убеждаюсь, что если долго и методично биться лбом в стену "не получается", стена не выдерживает первой ;)
А.Токарев
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

Вот здесь как посмотрет приват FTP через http : http://forum.clarionlife.net/viewtopic.php?t=1520
Здесь как по FTP ходить в приватные папки : http://forum.clarionlife.net/viewtopic.php?t=1326

Смотри там каталог SolidSoftware
Ответить