国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測

這篇具有很好參考價值的文章主要介紹了【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

一:車輛識別 運(yùn)動目標(biāo)檢測

二:車輛識別實(shí)現(xiàn) 超詳細(xì)步驟解析

步驟一:灰度化處理

步驟二:幀差處理

步驟三:二值化處理

步驟四:圖像降噪

4-1 腐蝕處理 目的 去除白色噪點(diǎn)

4-2 膨脹處理 目的 把白色區(qū)域變大

步驟五:提取關(guān)鍵點(diǎn) 框選運(yùn)動目標(biāo)檢測

三:車輛識別 完整源碼分享


一:車輛識別 運(yùn)動目標(biāo)檢測

【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測

二:車輛識別實(shí)現(xiàn) 超詳細(xì)步驟解析

步驟一:灰度化處理

灰度處理目的 RGB三通道轉(zhuǎn)灰度單通道 壓縮到原圖片三分之一大小

效果展示:【避免內(nèi)存浪費(fèi) 幀差法對前后幀圖像灰度化處理】 cvtColor

【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測

//1 灰度處理 目的 RGB三通道轉(zhuǎn)灰度單通道 壓縮到原圖片三分之一大小
    cvtColor(frontFrame,frontGray,CV_RGB2GRAY);//前一幀灰度化處理
    cvtColor(afterFrame,afterGray,CV_RGB2GRAY);//后一幀灰度化處理
    //imshow("frontGray",frontGray);//測試
    //imshow("afterGray",afterGray);//測試

步驟二:幀差處理

幀差處理目的 找到幀與幀之間的差異(找出正在運(yùn)動的物體)

效果展示:【運(yùn)動目標(biāo)的檢測:運(yùn)動事物顯示灰度,靜止事物顯示黑度】 absdiff

【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測

 //2 幀差處理 目的 找到幀與幀之間的差異(正在運(yùn)動的物體)
    Mat diff;
    Mat frontGray,afterGray;
    absdiff(frontGray,afterGray,diff);//前后幀對比存于diff中
    imshow("diff",diff);//測試

步驟三:二值化處理

二值化處理 目的 將灰度圖繼續(xù)識別轉(zhuǎn)換為黑白分明的圖像? ? threshold

效果展示:【步驟二中運(yùn)動事物顯示灰度,靜止事物顯示黑度,在這里進(jìn)行二值化處理,能夠黑白分明,便于計算機(jī)識別運(yùn)動目標(biāo),如下右圖二值化處理后黑白分明】【缺點(diǎn):存在白色噪點(diǎn),如下右圖除了車輛外后面的背景也顯示白度,這就是白色噪點(diǎn),需要去除】

【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測

    //3 二值化處理 目的 將灰度圖繼續(xù)識別轉(zhuǎn)換為黑白分明的圖像
    threshold(diff,diff,25,255,CV_THRESH_BINARY);
    imshow("threshold",diff);//測試

步驟四:圖像降噪

4-1 腐蝕處理 目的 去除白色噪點(diǎn)

效果展示:【步驟三中存在的白色噪點(diǎn)能夠去除,但是在去除白色噪點(diǎn)的同時,也影響了車輛的白度顯示,如下右圖可以看出,車輛白度顯示有所降低,因此還是需要改進(jìn)】erode

【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測

    //4 圖像降噪
    //4-1 腐蝕處理 目的 去除白色噪點(diǎn)
    Mat element = cv::getStructuringElement(MORPH_RECT,Size(3,3));//小于3*3方塊的白色噪點(diǎn)都會被腐蝕
    erode(diff,diff,element);
    imshow("erode",diff);//測試

4-2 膨脹處理 目的 把白色區(qū)域變大

效果展示:【如下右圖,膨脹處理將車輛形狀大致顯示,便于框選車輛識別操作dilate

【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測

    //4-2 膨脹 目的 把白色區(qū)域變大
    Mat element2=cv::getStructuringElement(MORPH_RECT,Size(20,20));
    dilate(diff,diff,element2);
    imshow("dilate",diff);//測試

步驟五:提取關(guān)鍵點(diǎn) 框選運(yùn)動目標(biāo)檢測

效果展示:車輛識別 運(yùn)行目標(biāo)檢測 框選識別行進(jìn)的車輛? ?

【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測

    //5 提取關(guān)鍵點(diǎn)
    //5-1 查找特征點(diǎn)
    vector<vector<Point>>contours;
    findContours(diff,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE,Point(0,0));

    //5-2 提取關(guān)鍵點(diǎn)
    vector<vector<Point>>contours_poly(contours.size());
    vector<Rect>boundRect(contours.size());

    //5-3 確定下四個點(diǎn)來用于框選目標(biāo)物體
    int x,y,w,h;
    int num=contours.size();
    for(int i = 0;i < num;i++)
    {
        approxPolyDP(Mat(contours[i]),contours_poly[i],3,true);
        //多邊擬合
        boundRect[i]=boundingRect(Mat(contours_poly[i]));
        x=boundRect[i].x;
        y=boundRect[i].y;
        w=boundRect[i].width;
        h=boundRect[i].height;
        //繪制矩形
        rectangle(resFrame,Point(x,y),Point(x+w,y+h),Scalar(0,0,255),2);
    }

三:車輛識別 完整源碼分享

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

Mat moveCheck(Mat &frontFrame,Mat &afterFrame)
{
    Mat resFrame,diff;
    Mat frontGray,afterGray;

    //克隆當(dāng)前幀畫面 返回最終結(jié)果
    resFrame = afterFrame.clone();

    //1 灰度處理 目的 RGB三通道轉(zhuǎn)灰度單通道 壓縮到原圖片三分之一大小
    cvtColor(frontFrame,frontGray,CV_RGB2GRAY);
    cvtColor(afterFrame,afterGray,CV_RGB2GRAY);

    //imshow("frontGray",frontGray);
    //imshow("afterGray",afterGray);

    //2 幀差處理 目的 找到幀與幀之間的差異(正在運(yùn)動的物體)
    absdiff(frontGray,afterGray,diff);
    //imshow("diff",diff);

    //3 二值化處理 目的 將灰度圖繼續(xù)識別轉(zhuǎn)換為黑白分明的圖像
    threshold(diff,diff,25,255,CV_THRESH_BINARY);
    //imshow("threshold",diff);

    //4 圖像降噪
    //4-1 腐蝕處理 目的 去除白色噪點(diǎn)
    Mat element = cv::getStructuringElement(MORPH_RECT,Size(3,3));//小于3*3方塊的白色噪點(diǎn)都會被腐蝕
    erode(diff,diff,element);
    //imshow("erode",diff);

    //4-2 膨脹 目的 把白色區(qū)域變大
    Mat element2=cv::getStructuringElement(MORPH_RECT,Size(20,20));
    dilate(diff,diff,element2);
    //imshow("dilate",diff);

    //5 提取關(guān)鍵點(diǎn)
    //5-1 查找特征點(diǎn)
    vector<vector<Point>>contours;
    findContours(diff,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE,Point(0,0));

    //5-2 提取關(guān)鍵點(diǎn)
    vector<vector<Point>>contours_poly(contours.size());
    vector<Rect>boundRect(contours.size());

    //5-3 確定下四個點(diǎn)來用于框選目標(biāo)物體
    int x,y,w,h;
    int num=contours.size();
    for(int i = 0;i < num;i++)
    {
        approxPolyDP(Mat(contours[i]),contours_poly[i],3,true);
        //多邊擬合
        boundRect[i]=boundingRect(Mat(contours_poly[i]));
        x=boundRect[i].x;
        y=boundRect[i].y;
        w=boundRect[i].width;
        h=boundRect[i].height;
        //繪制矩形
        rectangle(resFrame,Point(x,y),Point(x+w,y+h),Scalar(0,0,255),2);
    }

    return resFrame;
}

int main(int argc, char *argv[])
{
    Mat frame;
    Mat temp;
    Mat res;
    int count = 0;

    VideoCapture cap("D:/00000000000003jieduanshipincailliao/carMove.mp4");//視頻路徑

    while (cap.read(frame))
    {
        count++;
        if(count == 1)
        {
            res = moveCheck(frame,frame);
        }
        else
        {
            res = moveCheck(temp,frame);
        }
        imshow("frame",frame);
        imshow("res",res);//最終車輛識別成果
        temp = frame.clone();
        waitKey(15);
    }
    return 0;
}

對于夜晚的行進(jìn)的車輛也能夠正常識別

【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測

不過,本次幀差法的車輛識別存在弊端,只要是運(yùn)動的物體都會識別,比如,博主打開攝像頭,動一動手指頭,也會被框選識別,因此是有一定弊端的

【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測

但是,幀差法的運(yùn)動目標(biāo)檢測,在夜晚監(jiān)控中是非常廣泛地應(yīng)用到,因?yàn)橛腥魏蔚娘L(fēng)吹草動,都會被框選識別,可以用于安防管理文章來源地址http://www.zghlxwxcb.cn/news/detail-443897.html

到了這里,關(guān)于【OpenCV】 車輛識別 運(yùn)動目標(biāo)檢測的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • opencv運(yùn)動目標(biāo)檢測-背景建模

    opencv運(yùn)動目標(biāo)檢測-背景建模

    背景建模 幀差法 由于場景中的目標(biāo)在運(yùn)動,目標(biāo)的影像在不同圖像幀中的位置不同。該類算法對時間上連續(xù)的兩幀圖像進(jìn)行差分運(yùn)算,不同幀對應(yīng)的像素點(diǎn)相減,判斷灰度差的絕對值,當(dāng)絕對值超過一定閾值時,即可判斷為運(yùn)動目標(biāo),從而實(shí)現(xiàn)目標(biāo)的檢測功能。 幀差法非常

    2024年02月12日
    瀏覽(14)
  • 【OpenCV】“幀差法”實(shí)現(xiàn)移動物體的檢測(車輛識別)

    【OpenCV】“幀差法”實(shí)現(xiàn)移動物體的檢測(車輛識別)

    目錄 一、幀差法 1、概念 2、為什么幀差法可以檢測運(yùn)動的物體?? 二、使用OpenCV配合幀差法實(shí)現(xiàn)車輛識別 1、加載視頻 2、灰度處理+幀差計算 3、二值化 4、腐蝕 5、膨脹 6、框選出車輛 三、全部代碼+實(shí)現(xiàn)效果 1、代碼 2、車輛檢測效果 四、幀差法存在不足之處 ? ? ? ? 幀差

    2024年02月02日
    瀏覽(27)
  • 計算機(jī)視覺實(shí)戰(zhàn)項(xiàng)目3(圖像分類+目標(biāo)檢測+目標(biāo)跟蹤+姿態(tài)識別+車道線識別+車牌識別+無人機(jī)檢測+A*路徑規(guī)劃+單目測距與測速+行人車輛計數(shù)等)

    計算機(jī)視覺實(shí)戰(zhàn)項(xiàng)目3(圖像分類+目標(biāo)檢測+目標(biāo)跟蹤+姿態(tài)識別+車道線識別+車牌識別+無人機(jī)檢測+A*路徑規(guī)劃+單目測距與測速+行人車輛計數(shù)等)

    該項(xiàng)目一個基于深度學(xué)習(xí)和目標(biāo)跟蹤算法的項(xiàng)目,主要用于實(shí)現(xiàn)視頻中的目標(biāo)檢測和跟蹤。 該項(xiàng)目使用了 YOLOv5目標(biāo)檢測算法和 DeepSORT 目標(biāo)跟蹤算法,以及一些輔助工具和庫,可以幫助用戶快速地在本地或者云端上實(shí)現(xiàn)視頻目標(biāo)檢測和跟蹤! 教程博客_傳送門鏈接-------單目測

    2024年02月08日
    瀏覽(28)
  • 競賽 深度學(xué)習(xí)交通車輛流量分析 - 目標(biāo)檢測與跟蹤 - python opencv

    競賽 深度學(xué)習(xí)交通車輛流量分析 - 目標(biāo)檢測與跟蹤 - python opencv

    ?? 優(yōu)質(zhì)競賽項(xiàng)目系列,今天要分享的是 ?? **基于深度學(xué)習(xí)得交通車輛流量分析 ** 該項(xiàng)目較為新穎,適合作為競賽課題方向,學(xué)長非常推薦! ??學(xué)長這里給一個題目綜合評分(每項(xiàng)滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):5分 ?? 更多資料, 項(xiàng)目分享: https://gitee.com/da

    2024年02月07日
    瀏覽(22)
  • 競賽選題 深度學(xué)習(xí)交通車輛流量分析 - 目標(biāo)檢測與跟蹤 - python opencv

    競賽選題 深度學(xué)習(xí)交通車輛流量分析 - 目標(biāo)檢測與跟蹤 - python opencv

    ?? 優(yōu)質(zhì)競賽項(xiàng)目系列,今天要分享的是 ?? **基于深度學(xué)習(xí)得交通車輛流量分析 ** 該項(xiàng)目較為新穎,適合作為競賽課題方向,學(xué)長非常推薦! ??學(xué)長這里給一個題目綜合評分(每項(xiàng)滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):5分 ?? 更多資料, 項(xiàng)目分享: https://gitee.com/da

    2024年02月06日
    瀏覽(30)
  • python畢業(yè)設(shè)計 深度學(xué)習(xí)交通車輛目標(biāo)檢測與跟蹤系統(tǒng) - opencv

    python畢業(yè)設(shè)計 深度學(xué)習(xí)交通車輛目標(biāo)檢測與跟蹤系統(tǒng) - opencv

    ?? 這兩年開始畢業(yè)設(shè)計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計項(xiàng)目,今天

    2024年02月05日
    瀏覽(23)
  • 競賽選題 深度學(xué)習(xí)YOLOv5車輛顏色識別檢測 - python opencv

    競賽選題 深度學(xué)習(xí)YOLOv5車輛顏色識別檢測 - python opencv

    ?? 優(yōu)質(zhì)競賽項(xiàng)目系列,今天要分享的是 ?? **基于深度學(xué)習(xí)YOLOv5車輛顏色識別檢測 ** 該項(xiàng)目較為新穎,適合作為競賽課題方向,學(xué)長非常推薦! ??學(xué)長這里給一個題目綜合評分(每項(xiàng)滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 ?? 更多資料, 項(xiàng)目分享: https://gitee.com

    2024年02月07日
    瀏覽(88)
  • 【畢業(yè)設(shè)計】深度學(xué)習(xí)YOLOv5車輛顏色識別檢測 - python opencv

    【畢業(yè)設(shè)計】深度學(xué)習(xí)YOLOv5車輛顏色識別檢測 - python opencv

    ?? 這兩年開始畢業(yè)設(shè)計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計項(xiàng)目,今天

    2024年02月16日
    瀏覽(26)
  • 計算機(jī)競賽 深度學(xué)習(xí)YOLOv5車輛顏色識別檢測 - python opencv

    計算機(jī)競賽 深度學(xué)習(xí)YOLOv5車輛顏色識別檢測 - python opencv

    ?? 優(yōu)質(zhì)競賽項(xiàng)目系列,今天要分享的是 ?? **基于深度學(xué)習(xí)YOLOv5車輛顏色識別檢測 ** 該項(xiàng)目較為新穎,適合作為競賽課題方向,學(xué)長非常推薦! ??學(xué)長這里給一個題目綜合評分(每項(xiàng)滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 ?? 更多資料, 項(xiàng)目分享: https://gitee.com

    2024年02月08日
    瀏覽(95)
  • python畢業(yè)設(shè)計 深度學(xué)習(xí)yolov5車輛顏色識別檢測系統(tǒng) - opencv

    python畢業(yè)設(shè)計 深度學(xué)習(xí)yolov5車輛顏色識別檢測系統(tǒng) - opencv

    ?? 這兩年開始畢業(yè)設(shè)計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計項(xiàng)目,今天

    2024年02月04日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包