主要功能:
通过海康威视视频服务器读取视频流,采用opencv对视频流进行处理,
采用红色的方框框出镜头中运动的物体轮廓.
一、下载对应电脑版本的海康威视SDK
海康威视官网
二、配置环境
1.将海康威视提供的库文件安装到/usr/lib和/lib下
具体方法
sudo chmod 777 lib/*
sudo cp lib/* /usr/lib/
sudo cp lib/* /lib/
cd /usr/lib
sudo ldconfig
cd /lib/
sudo ldconfig
三、代码
1.motion_detection.cpp
#include <cstdio>
#include <cstring>
#include <iostream>
#include <unistd.h>
#include "HCNetSDK.h"
#include "public.h"
#include "LinuxPlayM4.h"
#include <opencv2/core/core.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/optflow/motempl.hpp>
#include <string.h>
#include <unistd.h>
#include <ctype.h>
#define USECOLOR 1
using namespace std;
using namespace cv;
//--------------------------------------------
int iPicNum=1;//Set channel NO.
LONG nPort=-1;
HWND hWnd=0;
const double MHI_DURATION = 0.5;
const double MAX_TIME_DELTA = 0.5;
const double MIN_TIME_DELTA = 0.05;
const int N = 3;
//
const int CONTOUR_MAX_AERA = 16;
// ring image buffer
IplImage **buf = 0;
int last = 0;
// temporary images
IplImage *mhi = 0; // MHI: motion history image
//CvFilter filter = CV_GAUSSIAN_5x5;
CvConnectedComp *cur_comp, min_comp;
CvConnectedComp comp;
CvMemStorage *storage;
CvPoint pt[4];
// 参数:
// img – 输入视频帧
// dst – 检测结果
void update_mhi( IplImage* img, IplImage* dst, int diff_threshold )
{
double timestamp = clock()/100.; // get current time in seconds
CvSiz