Проблема, которую вы видите, состоит в том, что число, возвращаемое из 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
значение не зависит от формата изображения.