日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV检测和追踪车辆

發布時間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV检测和追踪车辆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章出處:https://blog.csdn.net/xfgryujk/article/details/61421763


完整源碼GitHub

  • 使用高斯混合模型(BackgroundSubtractorMOG2)對背景建模,提取出前景
  • 使用中值濾波去掉椒鹽噪聲,再閉運算和開運算填充空洞
  • 使用cvBlob庫追蹤車輛,我稍微修改了cvBlob源碼來通過編譯
  • 由于要對背景建模,這個方法要求背景是靜止的

    另外不同車輛白色區域不能連通,否則會認為是同一物體

    [cpp]?view plain?copy
  • void?processVideo(char*?videoFilename)??
  • {??
  • ????Mat?frame;?//?current?frame??
  • ????Mat?fgMaskMOG2;?//?fg?mask?fg?mask?generated?by?MOG2?method??
  • ????Mat?bgImg;?//?background??
  • ????Ptr<BackgroundSubtractorMOG2>?pMOG2?=?createBackgroundSubtractorMOG2(200,?36.0,?false);?//?MOG2?Background?subtractor??
  • ??
  • ????while?(true)??
  • ????{??
  • ????????VideoCapture?capture(videoFilename);??
  • ????????if?(!capture.isOpened())??
  • ????????{??
  • ????????????cerr?<<?"Unable?to?open?video?file:?"?<<?videoFilename?<<?endl;??
  • ????????????return;??
  • ????????}??
  • ??
  • ????????int?width?=?(int)capture.get(CV_CAP_PROP_FRAME_WIDTH);??
  • ????????int?height?=?(int)capture.get(CV_CAP_PROP_FRAME_HEIGHT);??
  • ??
  • ????????unique_ptr<IplImage,?void(*)(IplImage*)>?labelImg(cvCreateImage(cvSize(width,?height),?IPL_DEPTH_LABEL,?1),???
  • ????????????[](IplImage*?p){?cvReleaseImage(&p);?});??
  • ????????CvBlobs?blobs;??
  • ????????CvTracks?tracks;??
  • ??
  • ????????while?(true)??
  • ????????{??
  • ????????????//?read?input?data.?ESC?or?'q'?for?quitting??
  • ????????????int?key?=?waitKey(1);??
  • ????????????if?(key?==?'q'?||?key?==?27)??
  • ????????????????return;??
  • ????????????if?(!capture.read(frame))??
  • ????????????????break;??
  • ??
  • ????????????//?update?background??
  • ????????????pMOG2->apply(frame,?fgMaskMOG2);??
  • ????????????pMOG2->getBackgroundImage(bgImg);??
  • ????????????imshow("BG",?bgImg);??
  • ????????????imshow("Original?mask",?fgMaskMOG2);??
  • ??
  • ????????????//?post?process??
  • ????????????medianBlur(fgMaskMOG2,?fgMaskMOG2,?5);??
  • ????????????imshow("medianBlur",?fgMaskMOG2);??
  • ????????????morphologyEx(fgMaskMOG2,?fgMaskMOG2,?MORPH_CLOSE,?getStructuringElement(MORPH_RECT,?Size(5,?5)));?//?fill?black?holes??
  • ????????????morphologyEx(fgMaskMOG2,?fgMaskMOG2,?MORPH_OPEN,?getStructuringElement(MORPH_RECT,?Size(5,?5)));?//?fill?white?holes??
  • ????????????imshow("morphologyEx",?fgMaskMOG2);??
  • ??
  • ????????????//?track??
  • ????????????cvLabel(&IplImage(fgMaskMOG2),?labelImg.get(),?blobs);??
  • ????????????cvFilterByArea(blobs,?64,?10000);??
  • ????????????cvUpdateTracks(blobs,?tracks,?10,?90,?30);??
  • ????????????cvRenderTracks(tracks,?&IplImage(frame),?&IplImage(frame));??
  • ??
  • ????????????//?show??
  • ????????????imshow("Frame",?frame);??
  • ??
  • ????????????key?=?waitKey(30);??
  • ????????}??
  • ????}??
  • } ?
  • 總結

    以上是生活随笔為你收集整理的OpenCV检测和追踪车辆的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。