Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=9093610&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 05:19:36 2016
Кодировка: Windows-1251
Узнать цвет пикселя. Работа с видеопамятью. С/С++ [ + OpenGL ? ]. - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
Hat_if_nat
молчу,смотрю в даль

Рег.: 23.01.2005
Сообщений: 448
Из: сказка Туве Янссон
Рейтинг: 160
  Узнать цвет пикселя. Работа с видеопамятью. С/С++ [ + OpenGL ? ].
      26.11.2009 14:01
 

Задача такова (только не бейте за дилетанство :)):
Хочу написать прогу желательно на C / C++, которая выдавала бы значение заданного пикселя экрана (рабочего стола).
На входе координаты пикселя, на выходе например (255, 0, 0 ) если красный.
Ося *nix : или Mandriva, или Ubuntu, X-ы, KDE, видеокарта какая-то (если это важно).

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

пиксель не физический а, тот, что в графической оболочки.
Буду рад, если кто-нить понял мою задачу :) и попробует мне объяснить КУДА собственно копать.




porcupine
Carpal Tunnel

Рег.: 09.09.2008
Сообщений: 6598
Рейтинг: 7627
  Re: Узнать цвет пикселя. Работа с видеопамятью. С/С++ [ + OpenGL ? ]. [re: Hat_if_nat]
      26.11.2009 14:20
 

OpenGL тебе не поможет. Все делается намного проще. Как в линуксе - не знаю.



And then my master flew to the moon in a rocket of flamin' cheese! I like cheese!
Emacs
Carpal Tunnel

Рег.: 19.06.2008
Сообщений: 4873
Рейтинг: 1683
  Re: Узнать цвет пикселя. Работа с видеопамятью. С/С++ [ + OpenGL ? ]. [re: Hat_if_nat]
      26.11.2009 14:25
2

http://tronche.com/gui/x/xlib/utilities/XGetPixel.html



Ein Gemeinschaft, Ein Platform, Ein Emacs
А что за тема с белым кошаком?
Hoochy
Безжалостный пездюк

Рег.: 06.07.2005
Сообщений: 1073
Рейтинг: 1996
  Re: Узнать цвет пикселя. Работа с видеопамятью. С/С++ [ + OpenGL ? ]. [re: Hat_if_nat]
      26.11.2009 14:32
4

OpenGL тут явно не нужен.
Можно такое сделать при помощи Qt.
Есть пример для сохранения скриншота.
В нем надо будет сделать что-то вроде:
code:
QImage image = originalPixmap.toImage(); QRgb colour = image.pixel( x, y);


Hat_if_nat
молчу,смотрю в даль

Рег.: 23.01.2005
Сообщений: 448
Из: сказка Туве Янссон
Рейтинг: 160
  Re: Узнать цвет пикселя. Работа с видеопамятью. С/С++ [ + OpenGL ? ]. [re: Emacs]
      27.11.2009 13:17
 

Спасибо за ссылку по X-ам! :)
Можно вопрос?
взял пример кода "Hello World X" отсюда:
 http://www.paulgriffiths.net/program/c/hellox.php
 все необходимые либы установлены.
 пытаюсь скомпилить:
  
code:
g++ Hello.c -L/usr/include/X11

 выдает вот что:
  
code:
/home/user9/tmp/ccc80kao.o: In function `main': Hello.c:(.text+0x43): undefined reference to `XAllocSizeHints' Hello.c:(.text+0x53): undefined reference to `XAllocWMHints' Hello.c:(.text+0x63): undefined reference to `XAllocClassHint' Hello.c:(.text+0xb4): undefined reference to `XOpenDisplay' Hello.c:(.text+0x232): undefined reference to `XCreateSimpleWindow' Hello.c:(.text+0x24e): undefined reference to `XStringListToTextProperty' Hello.c:(.text+0x299): undefined reference to `XStringListToTextProperty' Hello.c:(.text+0x37a): undefined reference to `XSetWMProperties' Hello.c:(.text+0x395): undefined reference to `XSelectInput' Hello.c:(.text+0x3a9): undefined reference to `XLoadQueryFont' Hello.c:(.text+0x408): undefined reference to `XCreateGC' Hello.c:(.text+0x42a): undefined reference to `XSetFont' Hello.c:(.text+0x462): undefined reference to `XSetForeground' Hello.c:(.text+0x478): undefined reference to `XMapWindow' Hello.c:(.text+0x491): undefined reference to `XNextEvent' Hello.c:(.text+0x4f6): undefined reference to `XTextWidth' Hello.c:(.text+0x582): undefined reference to `XDrawString' Hello.c:(.text+0x5b2): undefined reference to `XUnloadFont' Hello.c:(.text+0x5c8): undefined reference to `XFreeGC' Hello.c:(.text+0x5d7): undefined reference to `XCloseDisplay' collect2: выполнение ld завершилось с кодом возврата 1

Похоже, что либы "не подгрузились"
Что я сделал не так при компиляции? Может нужно писать make файл? или можно обойтись без него :o




LazyBehemoth

Рег.: 08.06.2006
Сообщений: 923
Рейтинг: 996
  Re: Узнать цвет пикселя. Работа с видеопамятью. С/С++ [ + OpenGL ? ]. [re: Hat_if_nat]
      27.11.2009 13:40
 

Там же Makefile прилагается. Рассмотри его _внимательно_.

http://www.paulgriffiths.net/program/c/srcs/hellox.zip

Hat_if_nat
молчу,смотрю в даль

Рег.: 23.01.2005
Сообщений: 448
Из: сказка Туве Янссон
Рейтинг: 160
  Re: Узнать цвет пикселя. Работа с видеопамятью. С/С++ [ + OpenGL ? ]. [re: LazyBehemoth]
      27.11.2009 15:51
 

Да, заработал HelloWorld.
Спасибо.
Осталось понять, что помимо подключения к X-серверу и вызова XGetPixel необходимо добавить в проге о цвете пикселя. :)



Hoochy
Безжалостный пездюк

Рег.: 06.07.2005
Сообщений: 1073
Рейтинг: 1996
  Re: Узнать цвет пикселя. Работа с видеопамятью. С/С++ [ + OpenGL ? ]. [re: Hat_if_nat]
      27.11.2009 17:12
 

Предлагаю готовое решение.
Раньше на Qt ничего не писал, поэтому возможны косяки.
 
code:
#include <QApplication> #include <QPixmap> #include <QDesktopWidget> #include <iostream> using std::cin; using std::cout; using std::endl; int main(int argc, char *argv[]) { QApplication app(argc, argv); QPixmap pixmap = QPixmap::grabWindow(QApplication::desktop()->winId()); QImage image = pixmap.toImage(); int x, y; cout << "x = "; cin >> x; cout << "y = "; cin >> y; QColor color( image.pixel( x, y)); cout << "(" << color.red() << ", " << color.green() << ", " << color.blue() << " )" << endl; return 0; }


Emacs
Carpal Tunnel

Рег.: 19.06.2008
Сообщений: 4873
Рейтинг: 1683
  Re: Узнать цвет пикселя. Работа с видеопамятью. С/С++ [ + OpenGL ? ]. [re: Hat_if_nat]
      27.11.2009 18:12
 

http://tronche.com/gui/x/xlib/graphics/images.html#XImage
ссылка была в пределах страницы



Ein Gemeinschaft, Ein Platform, Ein Emacs
А что за тема с белым кошаком?
Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в