2010年3月16日 星期二

在Qt中建立不顯示標題欄、邊框的的窗口

QT 無邊框

viewerWindow->setWindowFlags(Qt::FramelessWindowHint); 
在創建窗口的地方的
Qt::WindowFlags 設為 Qt::SplashScreen 可以達到。。

也可以設置成 Qt::FramelessWindowHint | Qt::CustomizeWindowHint 也可以達到。。。自己試試多幾種的組合吧,我的就是試出來的。


Qt::WindowFlags f =Qt::Dialog | Qt::FramelessWindowHint | Qt::CustomizeWindowHint


可以通過QWidget類的setWFlags()函數來設定Qt::FramelessWindowHint來完成(繼承自QWidget的類也是如此,比如QMainWindow)。
比如:

QMainWindow mainWindow;
Qt::WindowFlags flags = 0;
flags |= Qt::FramelessWindowHint;
mainWindow.setWindowFlags(flags);
mainWindow.setFixedSize;

相關的類似屬性還有:
Qt::FramelessWindowHint
Qt::WindowTitleHint
Qt::WindowSystemMenuHint
Qt::WindowMinimizeButtonHint
Qt::WindowMaximizeButtonHint
Qt::WindowContextHelpButtonHint
Qt::WindowShadeButtonHint
Qt::WindowStaysOnTopHint
Qt::CustomizeWindowHint

具體可在http://doc.trolltech.com/3.3/qt.html#WidgetFlags-enum查到所有的Flags。

2010年3月3日 星期三

OpenCV 從抓取webcam 完整程式碼

#include <cv.h>
#include <highgui.h>
 
int main(int argc, char** argv) {
 
    CvCapture* capture;
    IplImage *img;
 
    capture = cvCaptureFromCAM(0);
 
    cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
 
    cvMoveWindow("mainWin", 0, 100);
 
    while(cvGrabFrame(capture)) {
 
        img=cvRetrieveFrame(capture);
 
        // 所有的影像處理都在這裡進行!
        // for example: 轉灰階
        /*
        IplImage * GRAY = 0;
        GRAY = cvCreateImage(cvSize(img->width,img->height),IPL_DEPTH_8U,1);
        cvCvtColor(img, GRAY, CV_RGB2GRAY);
        cvCvtColor(GRAY, img, CV_GRAY2RGB);
        cvReleaseImage(&GRAY);
        */
 
        cvShowImage("mainWin", img);
 
        int key=cvWaitKey(10);
 
        if(key == 27) // 27=ESC
 
            break;
 
    }
 
 
    cvReleaseCapture(& capture);
 
    return 0;
 
}