def getpixel(self, x, y): _x = int((x + 0.5) * self.boxsize) _y = int((y + 0.5) * self.boxsize) qpx = QPixmap.grabWidget(self) image = QImage(qpx.toImage()) color = QColor(image.pixel(_x, _y)) return color
class SetPixelFloat(UsesQApplication): '''Test case for calling setPixel with float as argument''' def setUp(self): #Acquire resources super(SetPixelFloat, self).setUp() self.color = qRgb(255, 0, 0) self.image = QImage(200, 200, QImage.Format_RGB32) def tearDown(self): #Release resources del self.color del self.image super(SetPixelFloat, self).tearDown() def testFloat(self): #QImage.setPixel(float, float, color) - Implicit conversion self.image.setPixel(3.14, 4.2, self.color) self.assertEqual(self.image.pixel(3.14, 4.2), self.color)
class ImagenQImage(BaseImagen): def __init__(self): super(ImagenQImage, self).__init__() self.mode = "No implementado" @property def size(self): return (self.img.width(), self.img.height()) def fromfile(self, filename): self.img = QImage(filename) def from_instance(self, qimage): self.img = qimage def empty(self, size, mode=QImage.Format_RGB888): self.img = QImage(size[0], size[1], mode) self.img.fill(qRgb(0, 0, 0)) #Rellenamos la imagen con negro def getpixel(self, xy): color = self.img.pixel(xy[0], xy[1]) return (qRed(color), qGreen(color), qBlue(color)) def putpixel(self, xy, value): self.img.setPixel(xy[0], xy[1], qRgb(value[0], value[1], value[2])) def get_img(self): return self.img def save(self, filename): self.img.save(filename, format="BMP", quality=100) def from_opencv(self, img_opencv): dst = cv2.cvtColor(img_opencv, cv2.COLOR_BGR2RGB) qim = QImage(dst.data, dst.shape[1], dst.shape[0], dst.strides[0], QImage.Format_RGB888) self.img = qim.copy()
class ImagenQImage(BaseImagen): def __init__(self): super(ImagenQImage, self).__init__() self.mode = "No implementado" @property def size(self): return (self.img.width(), self.img.height()) def fromfile(self, filename): self.img = QImage(filename) def from_instance(self, qimage): self.img = qimage def empty(self, size, mode=QImage.Format_RGB888): self.img = QImage(size[0], size[1], mode) self.img.fill(qRgb(0,0,0))#Rellenamos la imagen con negro def getpixel(self, xy): color = self.img.pixel(xy[0], xy[1]) return (qRed(color), qGreen(color), qBlue(color)) def putpixel(self, xy, value): self.img.setPixel(xy[0], xy[1], qRgb(value[0], value[1], value[2])) def get_img(self): return self.img def save(self, filename): self.img.save(filename, format="BMP", quality=100) def from_opencv(self, img_opencv): dst = cv2.cvtColor(img_opencv, cv2.COLOR_BGR2RGB) qim = QImage(dst.data, dst.shape[1], dst.shape[0], dst.strides[0], QImage.Format_RGB888) self.img = qim.copy()
from PySide.QtCore import QCoreApplication from PySide.QtGui import QImage if __name__ == "__main__": app = QCoreApplication([]) img = QImage("lenna.png") w, h = img.size().width(), img.size().width() for p in ((x, y) for x in range(w) for y in range(h)): colour = img.pixel(p[0], p[1]) # AARRGGBB r = (colour >> 16) & 0xFF g = (colour >> 8) & 0xFF b = colour & 0xFF avg = round((r + g + b) / 3) # Naïve method (no colour weighting) new_colour = 0xff000000 + (avg << 16) + (avg << 8) + avg img.setPixel(p[0], p[1], new_colour) img.save("output.png")
from PySide.QtCore import QCoreApplication from PySide.QtGui import QImage if __name__ == "__main__": app = QCoreApplication([]) img = QImage("lenna.png") w, h = img.size().width(), img.size().width() for p in ((x, y) for x in range(w) for y in range(h)): colour = img.pixel(p[0], p[1]) # AARRGGBB r = (colour >> 16) & 0xFF g = (colour >> 8) & 0xFF b = colour & 0xFF avg = round((r + g + b) / 3) # Naïve method (no colour weighting) new_colour = 0xff000000 + (avg << 16) + (avg << 8) + avg img.setPixel(p[0], p[1], new_colour) img.save("output.png")