OpenCv 자체 전경 측정 방법
3280 단어 컴퓨터 시각
#include "opencv2/video/background_segm.hpp"
#include "opencv2/highgui/highgui.hpp"
#include
#include
#include
using namespace cv;
void help()
{
printf("
Do background segmentation, especially demonstrating the use of cvUpdateBGStatModel().
"
"Learns the background at the start and then segments.
"
"Learning is togged by the space key. Will read from file or camera
"
"Call:
"
"./ bgfg_segm [file name -- if no name, read from camera]
");
}
//this is a sample for foreground detection functions
int main(int argc, char** argv)
{
VideoCapture cap;
bool update_bg_model = true;
if( argc < 2 )
cap.open(0);
else
cap.open(argv[1]);
help();
if( !cap.isOpened() )
{
printf("can not open camera or video file
");
return -1;
}
namedWindow("image", CV_WINDOW_NORMAL);
namedWindow("foreground mask", CV_WINDOW_NORMAL);
namedWindow("foreground image", CV_WINDOW_NORMAL);
namedWindow("mean background image", CV_WINDOW_NORMAL);
BackgroundSubtractorMOG2 bg_model;
Mat img, fgmask, fgimg;
for(;;)
{
cap >> img;
if( img.empty() )
break;
if( fgimg.empty() )
fgimg.create(img.size(), img.type());
//update the model
bg_model(img, fgmask, update_bg_model ? -1 : 0);
fgimg = Scalar::all(0);
img.copyTo(fgimg, fgmask);
Mat bgimg;
bg_model.getBackgroundImage(bgimg);
//erode(fgimg,fgimg,0);
//dilate(fgimg,fgimg,0);
int nl = fgmask.rows;
int nc = fgmask.cols * fgmask.channels();
//
for(int j=0; j(j);
for(int i=0; i
2.OpenCV1.0의 코드는 다음과 같습니다.
#include "cvaux.h"
#include "highgui.h"
#include
//this is a sample for foreground detection functions
int main(int argc, char** argv)
{
IplImage* tmp_frame = NULL;
CvCapture* cap = NULL;
if( argc < 2 )
{
printf("please specify video file name
");
exit(0);
}
//cap = cvCaptureFromFile(argv[1]);
cap=cvCreateCameraCapture(0);
tmp_frame = cvQueryFrame(cap);
if(!tmp_frame)
{
printf("bad video
");
exit(0);
}
cvNamedWindow("BG", 1);
cvNamedWindow("FG", 1);
//create BG model
CvBGStatModel* bg_model = cvCreateFGDStatModel( tmp_frame );
for( int fr = 1;tmp_frame; tmp_frame = cvQueryFrame(cap), fr++ )
{
double t = (double)cvGetTickCount();
cvUpdateBGStatModel( tmp_frame, bg_model );
t = (double)cvGetTickCount() - t;
printf( "%.1f
", t/(cvGetTickFrequency()*1000.) );
cvShowImage("BG", bg_model->background);
cvShowImage("FG", bg_model->foreground);
char k = cvWaitKey(5);
if( k == 27 ) break;
//printf("frame# %d \r", fr);
}
cvReleaseBGStatModel( &bg_model );
cvReleaseCapture(&cap);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
yolov4 목표 탐지 기교 향상증가합니다.cfg 파일의 네트워크 해상도(height=608,width=608 또는 32의 배수)를 사용하면 정밀도를 높일 수 있습니다. 검측할 모든 대상에 대해 훈련 데이터 집합은 최소한 비슷한 대상이 있어야 하며...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.