一、安裝opencv和搭建環境
這裡就貼出幾個教程:
安裝教程:
關於其他opencv版本的安裝教程網路上也有很多,這裡就只貼出這兩個。
二、關於opencv的介紹
我看還是把網路上關於這方面好的教程給大家貼出來吧,我怕講不好的話招笑話
首先是淺墨大神的系列部落格,我基本上就是從大神的部落格中學習到的,還有他的《opencv3.0程式設計入門》(強烈推薦!非常通熟易懂!網上一搜即可)
淺墨opencv入門教程
當然opencv中文論壇上的也很好,但是感覺跟淺墨大神的內容差不多
opencv中文論壇教程
三、系統結構設計
流程圖:
混合高斯建模
backgroundsubtractormog和backgroundsubtractormog2
原始碼如下:
#include #include #include #include#include#includeusing namespace cv;
using namespace std;
//對輪廓按面積降序排序,目的是去除那些小輪廓目標
bool descsort(vectorp1, vectorp2)
int main()
//}//imshow("前景訓練結果", mask);
//迴圈顯示每一幀
while (true)
frame.copyto(result);
//cvtcolor(frame, frame, color_gray2bgr);
//waitkey(30); //延時30ms
imshow("混合高斯建模", mask);
//waitkey(30);
//cvtcolor(mask, mask, color_gray2bgr);
//對前景先進行中值濾波,再進行形態學膨脹操作,以去除偽目標和連線斷開的小目標
medianblur(mask, mask, 5);
//morphologyex(mask, mask, morph_dilate, getstructuringelement(morph_rect, size(5, 5)));
//測試:先開運算再閉運算
morphologyex(mask, mask, morph_close, getstructuringelement(morph_rect, size(5, 5)));
morphologyex(mask, mask, morph_open, getstructuringelement(morph_rect, size(5, 5)));
imshow("混合高斯建模", mask);
waitkey(30);
//拷貝
mask.copyto(srcimage);
//各聯通分量的輪廓
//外層vector的size代表了影象中輪廓的個數,裡面vector的 size代表了輪廓上點的個數
vector> contours;
//只獲取最外輪廓,獲取每個輪廓的每個畫素,並相鄰兩個畫素位置差不超過1
//測試輪廓獲取
imshow("輪廓獲取", srcimage);
if (contours.size() < 1) continue;
//外接矩陣
rect rct;
//對輪廓進行外接矩陣之前先對輪廓按面積降序排序,目的為了去除小目標(偽目標)
sort(contours.begin(), contours.end(), descsort);
for (int i = 0; i < contours.size(); i++)
imshow("結果", result);
} getchar();
return 0;
}
基於OpenCV的車輛檢測與追蹤的實現
一 安裝opencv和搭建環境 這裡就貼出幾個教程 安裝教程 關於其他opencv版本的安裝教程網路上也有很多,這裡就只貼出這兩個。二 關於opencv的介紹 我看還是把網路上關於這方面好的教程給大家貼出來吧,我怕講不好的話招笑話 首先是淺墨大神的系列部落格,我基本上就是從大神的部落格中學習到的,還...
基於Python的OpenCV人臉檢測
注意 本文只是人臉檢測,人臉識別的實現請參見本人另一篇部落格 基於opencv tensorflow keras實現人臉識別 提前做的準備 1 和說明 import cv2 as cv import numpy as np defface detect demo 人臉檢測函式 gray cv.cvt...
基於OpenCV的多目標動態檢測與跟蹤
1 源 include stdafx.h include include include include include include include include include include include 跟蹤引數 const double mhi duration 0.5 最大跟蹤時間...