材料:opencv2.4.7,vs2010,海康威视网络摄像头,海康SDK(win64)

一. OpenCV2.4.7+vs2010配置

1、设置环境变量:

我的电脑--->右键--->属性--->高级--->环境变量--->在用户变量里,新建path和OPENCV两个项

(根据自己的OpenCV下载路径进行配置,我下载在了E:\OpenCV2中)

步骤1:在path中添加 E:\OpenCV2\opencv\build\x86\vc10\bin,和  E:\OpenCV2\opencv\build\x64\vc11  就是添加dll文件
步骤2:添加OPENCV的环境变量E:\OpenCV2\opencv\build

2、打开一个Opencv的工程,点菜单目录的“视图”--->属性管理器--->双击项目名称
步骤3:在配置属性--->VC++目录--->包含目录文件中添加

E:\OpenCV2\opencv\build\include
E:\OpenCV2\opencv\build\include\opencv
E:\OpenCV2\opencv\build\include\opencv2
E:\OpenCV2\opencv\build\include\opencv2\highgui
E:\OpenCV2\opencv\build\include\opencv2\imgproc
E:\OpenCV2\opencv\build\include\opencv2\core

步骤4::在配置属性--->VC++目录--->库目录中添加

E:\OpenCV2\opencv\build\x86\vc11\lib

步骤5 添加lib库文件, 在配置debug里--->项目属性--->链接器--->输入--->附加依赖库 里加上

opencv_calib3d247d.lib
opencv_contrib247d.lib
opencv_core247d.lib
opencv_features2d247d.lib
opencv_flann247d.lib
opencv_gpu247d.lib
opencv_highgui247d.lib
opencv_imgproc247d.lib
opencv_legacy247d.lib
opencv_ml247d.lib
opencv_nonfree247d.lib
opencv_objdetect247d.lib
opencv_photo247d.lib
opencv_stitching247d.lib
opencv_ts247d.lib
opencv_video247d.lib
opencv_videostab247d.lib

步骤6:在配置release里--->项目属性--->链接器--->输入--->附加依赖库 里加上

opencv_calib3d247.lib
opencv_contrib247.lib
opencv_core247.lib
opencv_features2d247.lib
opencv_flann247.lib
opencv_gpu247.lib
opencv_highgui247.lib
opencv_imgproc247.lib
opencv_legacy247.lib
opencv_ml247.lib
opencv_nonfree247.lib
opencv_objdetect247.lib
opencv_photo247.lib
opencv_stitching247.lib
opencv_ts247.lib
opencv_video247.lib
opencv_videostab247.lib

opencv测试实例:

//开始简单的实例:
#include <core/core.hpp> //注意路径
#include <highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;int main( int argc, char** argv )
{Mat image;image = imread("H:\\Image\\lena.jpg"); // Read the file,argv[1];注意是双斜杠!if(! image.data ) // Check for invalid input{cout << "Could not open or find the image" << std::endl ;return -1;}namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.imshow( "Display window", image ); // Show our image inside it.waitKey(0); // Wait for a keystroke in the windowreturn 0;}

. SDK+vs2010环境配置(预览)

首先,将网络摄像头接上电源,并通过网线接入电脑。在官网下载SADP,安装好后名字叫设备网络搜索,打开设备网路搜索点击刷新,观察设备是否在线(要保证你的设备ip与电脑ip在同一网段,即前三位相同,若已根据网上教程设置好设备的ip,账户名和密码,则要改正电脑ip与设备ip处于同一网段,相关教程自行百度)。

(win10)更改电脑ip步骤:网络和Internet设置->更改适配器选项->双击除了WiFi的另一个 (我的这里面叫以太网)->属性->双击Internet协议版本4(TCP/IPv4)->点击使用下面的IP地址(s),即可更改ip(注意:ip前三位和默认网关前三位于摄像机ip前三位相同,子网掩码设置为默认值

然后双击app中设备的ip名,进入网站(一般使用IE)进行登陆,注意此时要断开电脑的wifi。输入账户和密码登陆后,即可观察实时预览情况。

在VS2010中进行海康威视网络摄像头二次开发:

1.vs2010中新建工程

2.配置属性页        注:平台改为(x64)(因为我的SDK是win64版本,并下载于 E:\HIKSDKx64 文件夹中)

(1)VC++目录->包含目录->添加OpenCV的相关文件(见一),添加海康SDK中头文件路径(win64)

E:\HIKSDKx64\CH-HCNetSDKV6.0.2.35_build20190411_Win64\头文件

(2)VC++目录->库目录->添加OpenCV的相关文件(见一),添加海康SDK中库文件路径(win64)

E:\HIKSDKx64\CH-HCNetSDKV6.0.2.35_build20190411_Win64\库文件

(3)链接器->输入->附加依赖项->添加OpenCV的相关依赖项,添加海康SDK中附加依赖项

HCNetSDK.lib
GdiPlus.lib
HCAlarm.lib
HCCore.lib
HCGeneralCfgMgr.lib
HCPreview.lib
PlayCtrl.lib

(4)运行程序会出现缺少相关dll文件情况,在文件夹x64的debug文件夹中添加以下文件(这个debug中原本含有.exe文件)

HCNetSDKCom文件夹(不能更改名字)
AudioRender.dll
GdiPlus.dll
HCCore.dll
HCNetSDK.dll
PlayCtrl.dll
SuperRender.dll

:程序中加入#include "plaympeg4.h"  预览前加入语句    PlayM4_GetLastError(0);        要不然会出现64号问题

预览+抓图程序如下

// hkproject02.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
#include "plaympeg4.h"
#include <time.h>
#include <string>
using namespace std;//typedef HWND(WINAPI *PROCGETCONSOLEWINDOW)();
//PROCGETCONSOLEWINDOW GetConsoleWindow;void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{char tempbuf[256] = { 0 };switch (dwType){case EXCEPTION_RECONNECT: //预览时重连printf("----------reconnect--------%d\n", time(NULL));break;default:break;}
}
HWND GetConsoleHwnd(void)
{
#define MY_BUFSIZE 1024 // Buffer size for console window titles.HWND hwndFound;         // This is what is returned to the caller.char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated// WindowTitle.char pszOldWindowTitle[MY_BUFSIZE]; // Contains original// WindowTitle.// Fetch current window title.GetConsoleTitle((LPWSTR)pszOldWindowTitle, MY_BUFSIZE);// Format a "unique" NewWindowTitle.wsprintf((LPWSTR)pszNewWindowTitle, (LPCWSTR)"%d/%d",GetTickCount(),GetCurrentProcessId());// Change current window title.SetConsoleTitle((LPCWSTR)pszNewWindowTitle);// Ensure window title has been updated.Sleep(40);// Look for NewWindowTitle.hwndFound = FindWindow(NULL, (LPCWSTR)pszNewWindowTitle);// Restore original window title.SetConsoleTitle((LPCWSTR)pszOldWindowTitle);return(hwndFound);
}void main() {//---------------------------------------//初始化NET_DVR_Init();//设置连接时间与重连时间NET_DVR_SetConnectTime(2000, 1);NET_DVR_SetReconnect(10000, true);//---------------------------------------// 获取控制台窗口句柄//HMODULE hKernel32 = GetModuleHandle("kernel32");//GetConsoleWindow = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32, "GetConsoleWindow");//---------------------------------------// 注册设备LONG lUserID;NET_DVR_DEVICEINFO_V30 struDeviceInfo;lUserID = NET_DVR_Login_V30("192.168.0.65", 8000, "admin", "aaaa123456", &struDeviceInfo);if (lUserID < 0){printf("Login error, %d\n", NET_DVR_GetLastError());NET_DVR_Cleanup();return;}//---------------------------------------//注册消息异常回调函数NET_DVR_SetExceptionCallBack_V30(0, NULL, g_ExceptionCallBack, NULL);PlayM4_GetLastError(0);//---------------------------------------//启动预览并设置回调数据流LONG lRealPlayHandle;HWND hWnd = GetConsoleWindow(); //获取窗口句柄NET_DVR_PREVIEWINFO struPlayInfo = { 0 };struPlayInfo.hPlayWnd = hWnd; //需要SDK 解码时句柄设为有效值,仅取流不解码时可设为空struPlayInfo.lChannel = 1; //预览通道号struPlayInfo.dwStreamType = 0; //0-主码流,1-子码流,2-码流3,3-码流4,以此类推struPlayInfo.dwLinkMode = 0; //0- TCP 方式,1- UDP 方式,2- 多播方式,3- RTP 方式,4-RTP/RTSP,5-RSTP/HTTPstruPlayInfo.bBlocked = 1; //0- 非阻塞取流,1- 阻塞取流lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, NULL, NULL);//判断出的什么错误DWORD s;s = NET_DVR_GetLastError();if (lRealPlayHandle < 0){printf("NET_DVR_RealPlay_V40 error\n");NET_DVR_Logout(lUserID);NET_DVR_Cleanup();return;}int o = -1;for (int i = 0; i < 10; i++){string a = "E:\\c++\\HKsdk\\hkproject02\\out\\";char c = '1' + i;a.push_back(c);a = a + ".bmp";//抓图o = NET_DVR_CapturePicture(lRealPlayHandle, const_cast<char*>(a.c_str()));Sleep(1000);}Sleep(10000);//关闭预览NET_DVR_StopRealPlay(lRealPlayHandle);//注销用户NET_DVR_Logout(lUserID);//释放SDK 资源NET_DVR_Cleanup();return;
}

opencv+海康威视网络摄像头实时预览+抓图(环境配置加程序)相关推荐

  1. Java海康威视摄像头实时预览视频流保存到指定文件中

    海康威视摄像头实时预览视频流保存到文件中 目前在开发海康威视sdk ,IPC设备,视频回调用的是官方提供的Demo中的(fRealDataCallBack ) 在最下面代码可以设置Thread.sle ...

  2. FFmpeg入门详解之124:Qt5 FFmpeg单路网络摄像头采集预览

    Qt5+FFmpeg单路网络摄像头采集预览 源码工程:S26_Test4 RTSP协议简介 RTSP(Real Time Streaming Protocol),RFC2326 RTSP(Real T ...

  3. 浏览器显示海康摄像头实时预览画面纯前端解决方案

    浏览器显示海康摄像头实时预览画面纯前端解决方案 将海康设备的 rtsp 协议视频流通过 ffmpeg 转码为 flv 实时视频流,并将实时视频流通过 express 服务生成 http 长链接或 ws ...

  4. 实现flv格式网络摄像头实时视频预览(nginx-rtmp,ffmpeg)

    实现http-flv格式网络摄像头实时视频预览(nginx-rtmp,ffmpeg) 实现思路 获取摄像头rtsp流→流媒体拉流转码推流成rtmp流(网页具备flash可播放,谷歌浏览器已经禁用)→不 ...

  5. 海康网络摄像头实时视频预览(流媒体转码推流 red5,nginx-rtmp,ffmpeg)

    海康网络摄像头实时视频预览(流媒体转码推流 red5,nginx-rtmp,ffmpeg) 实现思路 获取摄像头rtsp流→流媒体拉流转码推流成rtmp流(网页具备flash可播放)→根据rtmp流地 ...

  6. 使用Visual Studio 2022中的Web实时预览设计Web窗体应用程序

    目录 新的Web表单设计器 完全支持最新的浏览器技术 使用实时数据而不是"占位符"数据进行预览 选择一个控件导航到源 源文件的实时更新 操作面板支持 从工具箱中拖放 更改设计器表面 ...

  7. 基于Python的双USB摄像头实时预览保存软件

    基于PyQt5,opencv,实现双usb外接摄像头拍摄存储 双摄像头支持单独开启关闭,实时预览视频,单独/同时保存预览视频图片 多线程模式,支持掉线重连(有点bug,因无法绑定设备id,画面会出现错 ...

  8. [常用工具] OpenCV获取网络摄像头实时视频流

    所需要硬件及软件环境: python 3/OpenCV3.4 or C++11/OpenCV3.4 1 RTSP协议 RTSP (Real Time Streaming Protocol),是一种语法 ...

  9. OpenCV获取网络摄像头实时视频流

    1.RTSP协议 RTSP (Real Time Streaming Protocol),是一种语法和操作类似 HTTP 协议,专门用于音频和视频的应用层协议. 和 HTTP 类似,RTSP 也使用 ...

  10. 海康威视多摄像头实时视频预览(基于SDK的二次开发)

    项目背景 很久没有做工程项目了,最近突然接单,要做多摄像头下运动物体入侵检测及拌线检测,本文测试用到的摄像头是海康威视的DS-2CD23**D摄像头. 环境配置: 1.下载SDK 2.vs2010开发 ...

最新文章

  1. 基于用户评价的评分模型
  2. UNIX再学习 -- 静态库与共享库
  3. Spring5的Web 组件
  4. 既然现在处理器性能过剩,为什么PC用起来不流畅?
  5. mysql _bin编码_mysql中utf8_bin、utf8_general_ci、utf8_general_cs编码区别
  6. 详解循环神经网络RNN(理论篇)
  7. css实现返回顶部,实现返回顶部效果
  8. javaweb学生宿舍管理系统设计与实现(含程序+论文+数据库)
  9. php递归函数及简单实例讲解
  10. 第一颗国产HDMI 1.4 至 TTL / 2 端口 LVDS 芯片LT8619C
  11. php怎么更换图片背景颜色,照片换底色红色变白色怎么变 怎么换照片底色
  12. UE4 Spline
  13. 异常:java lang AbstractMethodError
  14. lwip --- (十六)TCP建立流程
  15. ID卡IC卡的复制卡种类介绍
  16. AVR32单片机 矩阵按键 按键键值函数解析
  17. 花开的地方在希尔的故乡,听着远古的战歌仿佛生在花开的地方
  18. 如何去除 录像开始和结束时 的噔噔噔噔声音
  19. 远程连接windows 2012 是报出“出现身份验证错误,要求的函数不受支持”解决方法”
  20. wordpress主题_40个免费和高质量的WordPress主题(2017)

热门文章

  1. 在电脑窗口中截取长图/滚动截图
  2. js读写json文件
  3. 用java遍历所有文件夹,将word文件转换为txt格式
  4. 小米平板2wifi驱动下载_小米平板2windows系统无线网怎么连接
  5. Nginx面试题总结大全
  6. 风车IM即时通讯聊天系统源码
  7. chrome 历史版本和chrome webDriver历史版本
  8. 字节跳动sql笔试题
  9. win7系统 winload.efi 文件损坏 报 0xc0000428 错误 不重装系统解决方法
  10. 《Java疯狂讲义》重点及相关信息 第一章