OpenCV+海康威视摄像头的实时读取
之前没想过会有这么多朋友遇到问题,所以建了一个qq群536898072,专门供大家以后一起交流讨论图像和机器学习的project实践问题。
环境
硬件:
PC:i7-4970 16GB内存 摄像头型号:DS-2CD3310D-I(2.8mm)
配置
保证使用SADP工具能够识别摄像头,然后配置IP与电脑在同一个网段。
再保证能够从浏览器中訪问。账号password默认的通常是admin、a123456789(老版本号的摄像头password是12345)。
登录成功后可能要求下载WebComponent控件。下载好了安装便是。假设仍然出现例如以下画面:
则换一种浏览器试。
通常是默认浏览器没问题的。
配置使用sdk中自带的ClientDemo.exe工具能够訪问
配置sdk开发环境
– opencv的配置
这里不展开讲opencv的配置,仅说明须要配置opencv环境变量、设置好相应的vs开发环境的属性配置
– 海康威视sdk属性配置
由于是64位环境。为了增强属性配置的内聚性,单独加入新项目属性表,设置海康威视sdk的属性
依赖库写全。为:
HCNetSDK.lib;PlayCtrl.lib;ws2_32.lib;winmm.lib;GdiPlus.lib;IPHlpApi.Lib;%(AdditionalDependencies)
代码及说明
#include
#include
#include
#include
#include
#include
#include
#include
/*#include "PlayM4.h"*/
#include
#include
#include
#include "global.h"
#include "readCamera.h"
#define USECOLOR 1
using namespace cv;
using namespace std;
//--------------------------------------------
int iPicNum=0;//Set channel NO.
LONG nPort=-1;
HWND hWnd=NULL;
void yv12toYUV(char *outYuv, char *inYv12, int width, int height,int widthStep)
{
int col,row;
unsigned int Y,U,V;
int tmp;
int idx;
//printf("widthStep=%d.\n