void ColibriMainWindow::on_fileButton_clicked() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), mLastSettings.lastImagesDir, tr("Images (*.png *.PNG " "*.xpm " "*.jpg *.jpeg *.JPG *.JPEG " "*.bmp *.BMP)")); if(fileName.isEmpty()) return; QFileInfo fi(fileName); if(!fi.exists()) { QMessageBox::critical(NULL, tr("Image loading error"), tr("File ") + fileName + tr(" does not exists.")); return; } mLastSettings.lastImagesDir = fi.absolutePath(); saveSettings(); // load file IplImage * iplImage = cvLoadImage(fileName.toUtf8().data()); if(!iplImage) { QMessageBox::critical(NULL, tr("Image loading error"), tr("Could not load image ") + fileName); return; } computeImage(iplImage); tmReleaseImage(&iplImage); }
// display callback invoked when window needs to be redrawn void onDisplay( ) { glClearColor(0.1f, 0.2f, 0.3f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // clear screen if(computeImage()) glutPostRedisplay(); glDrawPixels(screenWidth, screenHeight, GL_RGB, GL_FLOAT, image); glutSwapBuffers(); // drawing finished }
void ColibriMainWindow::on_grabTimer_timeout() { QPixmap desktopPixmap = QPixmap::grabWindow( //QApplication::activeWindow()->winId()); QApplication::desktop()->winId()); fprintf(stderr, "%s:%d: desktopImage=%dx%dx%d\n", __func__, __LINE__, desktopPixmap.width(), desktopPixmap.height(), desktopPixmap.depth()); //desktopPixmap.save("/tmp/desktop.png"); //QApplication::activeWindow()->show(); // Crop where the window is fprintf(stderr, "%s:%d: curpos=%dx%d+%dx%d\n", __func__, __LINE__, m_grabRect.x(), m_grabRect.y(), m_grabRect.width(), m_grabRect.height()); QImage desktopImage; desktopImage = ( desktopPixmap.copy(m_grabRect).toImage() ); if(desktopImage.isNull()) { fprintf(stderr, "%s:%d: desktopImage is null !\n", __func__, __LINE__); return; } fprintf(stderr, "%s:%d: desktopImage=%dx%dx%d\n", __func__, __LINE__, desktopImage.width(), desktopImage.height(), desktopImage.depth()); IplImage * iplImage = cvCreateImage(cvSize(desktopImage.width(), desktopImage.height()), IPL_DEPTH_8U, desktopImage.depth()/8); memcpy(iplImage->imageData, (char *)desktopImage.bits(), iplImage->widthStep*iplImage->height); // // We have to set the alpha flag // u8 * alpha = (u8 *) iplImage->imageData; // for(int pos = 3; pos <iplImage->widthStep*iplImage->height; pos+=4) // { // alpha[pos] = 255; // } // cvSaveImage("/dev/shm/unprocessed.png", iplImage); computeImage(iplImage); // cvSaveImage("/dev/shm/processed.png", iplImage); show(); tmReleaseImage(&iplImage); }