關(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)閉
        主站蜘蛛池模板: 和平区| 涟水县| 汉寿县| 泸水县| 阜南县| 新源县| 辽宁省| 江西省| 八宿县| 汕头市| 景洪市| 墨脱县| 聂荣县| 肇庆市| 万安县| 庆云县| 文水县| 三原县| 安阳县| 马鞍山市| 开平市| 塔河县| 临漳县| 隆子县| 辽宁省| 乌兰浩特市| 图片| 广饶县| 康乐县| 瓦房店市| 团风县| 甘谷县| 宝坻区| 无锡市| 湘潭县| 邵阳市| 凤阳县| 丰城市| 周宁县| 张北县| 航空|