Как получить значения RGB QPixmap или QImage pixel – Qt, PyQt

Основываясь на этом ответе https://stackoverflow.com/a/769221/544721 , я сделал следующие значения для печати кода в захваченной области:

import sys from PyQt4.QtGui import QPixmap, QApplication app = QApplication(sys.argv) # img is QImage type img = QPixmap.grabWindow( QApplication.desktop().winId(), x=00, y=100, height=20, width=20, ).toImage() for x in range(0,20): for y in range(0,20): print( "({},{}) = {}".format( x,y,(img.pixel(x,y)) ) ) 

Но пиксели отображаются следующим образом:

 (0,0) = 4285163107 (0,1) = 4285163107 (0,2) = 4285163107 (0,3) = 4285163107 (0,4) = 4285163107 (0,5) = 4285163107 

Как получить значения RGB для QImage (полученных из QPixmap ) пикселей? (предпочтительно, решение, работающее в 16,24,32 глубинах экрана)?

Пример вывода:

 (0,0) = (0,0,0) ... (10,15) = (127,15,256) 

(Решение для Linux, написанное на Python3)

2 Solutions collect form web for “Как получить значения RGB QPixmap или QImage pixel – Qt, PyQt”

Проблема, которую вы видите, заключается в том, что число, возвращаемое из img.pixel (), фактически является значением QRgb, которое является независимым от формата значением. Затем вы можете преобразовать его в соответствующее представление:

 import sys from PyQt4.QtGui import QPixmap, QApplication, QColor app = QApplication(sys.argv) # img is QImage type img = QPixmap.grabWindow( QApplication.desktop().winId(), x=00, y=100, height=20, width=20, ).toImage() for x in range(0,20): for y in range(0,20): c = img.pixel(x,y) colors = QColor(c).getRgbF() print "(%s,%s) = %s" % (x, y, colors) 

Вывод

 (0,0) = (0.60784313725490191, 0.6588235294117647, 0.70980392156862748, 1.0) (0,1) = (0.60784313725490191, 0.6588235294117647, 0.70980392156862748, 1.0) (0,2) = (0.61176470588235299, 0.6588235294117647, 0.71372549019607845, 1.0) (0,3) = (0.61176470588235299, 0.66274509803921566, 0.71372549019607845, 1.0) 

Документы QImage :

Цвет пикселя можно получить, передав его координаты функции pixel (). Функция pixel () возвращает цвет как значение QRgb, не относящееся к формату изображения.

Цветовые компоненты значения QRgb возвращаемые QImage.pixel могут быть извлечены напрямую или через объект QColor :

 >>> from PyQt4 import QtGui >>> rgb = 4285163107 >>> QtGui.qRed(rgb), QtGui.qGreen(rgb), QtGui.qBlue(rgb) (106, 102, 99) >>> QtGui.QColor(rgb).getRgb()[:-1] (106, 102, 99) 
  • Python - PyQT4 как определить положение щелчка мыши в любом месте окна?
  • Рекурсивное копирование файлов с прогрессом
  • Я хочу использовать сочетания клавиш в моем коде в PyQt4
  • pyqt4 кнопка click обработчик
  • QSettings (): как сохранить текущий каталог
  • Получение виджетов макета в PyQT
  • Порядок операций PyQt GUI
  • Как разоблачить методы и свойства DBus с помощью QDBusAbstractAdaptor с PyQt4?
  • Блокировать QMainWindow, пока дочерний виджет жив, pyqt
  • Значки системной темы и PyQt4
  • PyQt Включить / отключить элементы в QComboBox
  • Python - лучший язык программирования в мире.