關(guān) 閉

        新聞中心

        EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于OpenCV的人臉識(shí)別設(shè)計(jì)方案

        基于OpenCV的人臉識(shí)別設(shè)計(jì)方案

        作者: 時(shí)間:2012-07-17 來源:網(wǎng)絡(luò) 收藏

        然后利用start()函數(shù)開啟QTimer 定時(shí)器,每隔一段時(shí)間發(fā)送信號(hào)調(diào)用自定義的槽函數(shù),該槽函數(shù)用cvGrab()從視頻流中抓取一幀圖像放入緩存,再利用CvRetrieve()從內(nèi)部緩存中將幀圖像讀出用于接下來的處理與顯示。在qt 中顯示之前,需將IplImage* source 轉(zhuǎn)換為QPixmap 類型。

        uchar *qImageBuffer = NULL;

        /*根據(jù)圖像大小分配緩沖區(qū)*/

        qImageBuffer = (uchar*) malloc(source-》width *

        source->height * 4 * sizeof(uchar));

        /*將緩沖區(qū)指針拷貝到存取Qimage 的指針中*/

        uchar *QImagePtr = qImageBuffer;

        /* 獲取源圖像內(nèi)存指針*/Const uchar*

        iplImagePtr=reinterpret_cast/uchar*》>(source->imageDat

        a);

        /*通過循環(huán)將源圖像數(shù)據(jù)拷貝入緩沖區(qū)內(nèi)*/

        for (int y = 0; y source->height; ++y){

        for (int x = 0; x source->width; ++x){

        QImagePtr[0] = iplImagePtr[0];

        QImagePtr[1] = iplImagePtr[1];

        QImagePtr[2] = iplImagePtr[2];

        QImagePtr[3] = 0;

        QImagePtr += 4;

        iplImagePtr += 3; }

        iplImagePtr+=source->widthStep–3*source->width; }

        /*將Qimage 轉(zhuǎn)換為Qpixmap*/QPixmap local =

        QPixmap::fromImage(QImage(qImageBuffer,source-》wi

        dth,source-》height, QImage::Format_RGB32));

        /*釋放緩沖區(qū)*/

        free(qImageBuffer);

        最后利用QLabel 的setPixmap()函數(shù)進(jìn)行顯示。

        c++相關(guān)文章:c++教程


        cvt相關(guān)文章:cvt原理


        全息投影相關(guān)文章:全息投影原理


        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 金湖县| 图们市| 开平市| 驻马店市| 石河子市| 尼勒克县| 安乡县| 英德市| 临沧市| 民乐县| 武宁县| 慈利县| 佛冈县| 涡阳县| 扎赉特旗| 屯昌县| 霍山县| 虹口区| 白河县| 隆昌县| 绥滨县| 丹寨县| 通化县| 富顺县| 晋中市| 英山县| 杂多县| 太和县| 九龙县| 循化| 金秀| 右玉县| 清流县| 松滋市| 屯昌县| 苍梧县| 竹山县| 廉江市| 马鞍山市| 新乡县| 泗洪县|