opencv3.0とopencv2.4のガウス混合モデルbackgroundSubtractorMOG2の使い分けについて
2022-02-28 07:06:48
opencv3.0とopencv2.4におけるBackgroundSubtractorMOG2関数の実装の違いについて
opencv2.4 では、#include "opencv2/opencv.hpp" ヘッダーファイルさえ追加すれば、メイン呼び出しコードは次のようになります。
int main()
{
VideoCapture video(". /video.avi");
Mat frame, mask, thresholdImage, output;
int frameNum = 1;
if (!video.isOpened())
cout << "fail to open!" << endl;
//cout<<video.isOpened();
long totalFrameNumber = video.get(CV_CAP_PROP_FRAME_COUNT);
video>>frame;
//cout<<frame.size;
BackgroundSubtractorMOG bgSubtractor(20, 10, 0.5, false);
//imshow("video", frame);
//waitKey(10000);
while (true){
if (totalFrameNumber == frameNum)
break;
video >> frame;
++frameNum;
bgSubtractor(frame, mask, 0.001);
//cout << frameNum << endl;
imshow("mask",mask);
waitKey(10);
}
return 0;
}
しかし、opencv 3.0 では、この関数の使い方が異なっており、また 3.0 では BackgroundSubtractorMOG 関数が少なく、BackgroundSubtractorMOG2 のみです。opencv 公式ドキュメント segment_objects.cpp ( http://http://docs.opencv.org/master/dd/d9d/segment_objects_8cpp-example.html#a22 ) を使って、その使い方を考えてみました。
私は以下のコードを使っています、vs2013+opencv3.0.0betaです。
#include "opencv2/opencv.hpp"
#include "opencv2/video/background_segm.hpp"
using namespace cv;
using namespace std;
int main()
{
VideoCapture video(". /video.avi");
int frameNum = 1;
Mat frame, mask, thresholdImage, output;
if (!video.isOpened())
cout << "fail to open!" << endl;
//cout<<video.isOpened();
double totalFrameNumber = video.get(CAP_PROP_FRAME_COUNT);
video >> frame;
Ptr<BackgroundSubtractorMOG2> bgsubtractor = createBackgroundSubtractorMOG2();
bgsubtractor->setVarThreshold(20);
while (true){
if (totalFrameNumber == frameNum)
break;
video >> frame;
++frameNum;
//bgSubtractor(frame, mask, 0.001);
bgsubtractor-> apply(frame, mask, 0.01);
imshow("mask", mask);
waitKey(10);
}
return 0;
}
参考
https://blog.csdn.net/xiaowei_cqu/article/details/23689189#comments
関連
-
OpenCV-DFT の最適サイズ cv::getOptimalDFTSize
-
OpenCV - 理想的なハイパスフィルタとローパスフィルタ (C++)
-
OpenCV-Butterworth ローパスおよびハイパスフィルタ (C++)
-
C++ベースのOpenCV共通関数
-
OpenCV演習 - 顔検出と顔画像抽出
-
OpenCV-Matrix データ型変換 cv::convertTo
-
(OpenCV+Python)-ターゲットトラッキング、バックグラウンドセグメンテーションツール。KNN、MOG2、GMG
-
Opencvにおける矩形関数とRect関数の使用法
-
opencv notes - cvCreateImage 関数の説明
-
cvCvtColor の使用法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン