Как получить значения 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) 
  • ограничить перемещаемую область qgraphicsitem
  • PyQt4 установить значок панели задач Windows
  • PyQt: щелчок X не вызывает closeEvent
  • как разместить виджеты внутри PyQt QMdiSubWindow
  • Могу ли я использовать анимацию с виджетами Matplotlib для pyqt4?
  • PyQt 4 UI замерзает
  • PyQt4 на Mavericks с питоном 3
  • Вложенные классы PyQt4 - «RuntimeError: базовый объект C / C ++ удален»
  •  
    Interesting Posts for Van-Lav

    Тернарный оператор для NumPy ndarray?

    Ошибка вычисления с помощью оператора pow

    Очистить с помощью BeautifulSoup с сайта, использующего разбиение на страницы AJAX с помощью Python

    Связать объекты в отношениях «многие-ко-многим» в SQLAlchemy

    Python – Когда вы можете передать позиционный аргумент по имени, а когда вы не можете?

    функция триггера после возвращения HttpResponse из представления django

    Десятичная точность Python против десятичной точности C #

    Запрос в redis

    matplotlib: сплошная цветовая палитра между двумя линиями

    Может ли PyCharm автоматически генерировать __init __ (), __eq __ () и __hash __ () реализации?

    Django: срок действия файла cookie, истекающего через 30 секунд, истекает через 30 минут?

    Python Разрешение отклонено:

    Максимальное количество элементов на пути матрицы

    Ошибка Python или неиспользуемая ошибка при перекрестной компиляции GDB

    Если вы подкласс от dict, почему __dict__ всегда пуст?

    Python - лучший язык программирования в мире.