Я получаю неожиданный вывод из фрагмента кода, который просто обращается к координатам изображения, вот фрагмент:
QImage image(imageFileNames[frameNumber]);
QRgb qrgb(image.pixel(493,114));
QColor testCol(qrgb);
Используя отладчик, чтобы убедиться, что я получил правильный путь к изображению, я получаю что-то вроде ../seq/0001.png
, как и ожидалось. Однако testCol
имеет значения:
[argb]
alpha 65535
blue 28013
green 24415
pad 0
red 59367
Вместо ожидаемого значения в диапазоне 255,255,255. Кроме того, значение qrb равно 4293353325. Координата пикселя находится в диапазоне изображения (изображение 720x288), а изображение в формате .png
(QImage::Format_RGB32
).
Я также обнаружил, что эта проблема, по-видимому, глобальна для всего приложения, и любой новый написанный код наследует это поведение.
После дальнейших экспериментов используйте следующий код:
QRgb qrgb(image.pixel(1,1)); //again this is in range
int blue = qBlue(qrgb);
int red = qRed(qrgb);
int green = qGreen(qrgb);
QColor testCol(red,green,blue, 255);
testColor
все еще имеет неправильные значения. Тем не менее, красный, зеленый и синий показывают ожидаемые значения. Похоже, это проблема с конструктором QColor
? Я не очень уверен в том, что именно происходит.
Есть идеи, что может быть причиной такого поведения? Я использую Qt 4.7 в Ubuntu 10.10.