void NonchipTilesetV2Interface::handleBatch(QList<QImage> tl, QString destination){ QImage outputImage = createOutputImage(tl); qDebug()<<"writing output-file with estimated size of"<<(outputImage.width()*outputImage.height()*4)<<"bytes"; QFile outputFile(destination); outputFile.open(QFile::WriteOnly); quint8 size = tl.first().width(); outputFile.write( ( (char*) &size ),1); //1 byte tilesize in pixel QRgb pixel; quint8 value; for (int y = 0; y<outputImage.height(); ++y){ for (int x = 0; x<outputImage.width(); ++x){ pixel = outputImage.pixel(x,y); value = qRed(pixel); outputFile.write( ( (char*) &value ),1); //1 byte red value value = qGreen(pixel); outputFile.write( ( (char*) &value ),1); //1 byte green value value = qBlue(pixel); outputFile.write( ( (char*) &value ),1); //1 byte blue value value = qAlpha(pixel); outputFile.write( ( (char*) &value ),1); //1 byte alpha value } } outputFile.close(); }
void MixtureOfGaussianGPU::init(int imageWidth, int imageHeight, int workGroupSizeX, int workGroupSizeY, int nmixtures) { nframe = 0; createMoGKernel(nmixtures); createMixtureDataBuffer(imageWidth * imageHeight, nmixtures); createMixtureParamsBuffer(); createOutputImage(imageWidth, imageHeight); width = imageWidth; height = imageHeight; kernel.setLocalWorkSize(workGroupSizeX, workGroupSizeY); kernel.setRoundedGlobalWorkSize(imageWidth, imageHeight); kernel.setArg(1, outputImage); kernel.setArg(2, mixtureDataBuffer); kernel.setArg(3, mixtureParamsBuffer); kernel.setArg(4, 0.0f); }