IDS相机SDK二次开发
接手的项目又用到了IDS的网口相机,需要进行双相机的出图,以及后续的视觉算法开发。以下将介绍利用IDS网口相机,在VS2013 win32控制台模式下进行相机的出图和测试(依旧使用OpenCV+ImageWatch测试效果)。
首先,需要安装IDS的软件包(开发者模式),可以在官网下载对应的开发包(https://en.ids-imaging.com/download-ueye-win32.html),特别注意软件版本要与电脑匹配!
然后,利用软件自带的IDS Camera Manager进行网口相机IP配置,电脑的IP与相机的IP的前三个字段要相同。设置成功后效果如下:
其次,需要在VS中配置IDS环境,进行二次开发。在VS中配置IDS的运行环境非常简单,主要是以下几步:
1.在新建好的工程的 “C/C++” 附件包含目录中添加 ...\IDS\uEye\Develop\include;(注意,省略号前为安装IDS软件的绝对路径地址,我的全称为 D:\Program Files\IDS\uEye\Develop\include);
2.在 “链接器” 附加库目录中添加 ...\IDS\uEye\Develop\Lib; (省略号内容同上);
3.在 “链接器” 附加依赖项中添加 uEye_api.lib;
4.在工程头文件中包含 #include <uye.h> 即可。
以下是利用单相机进行简单出图测试的简洁代码:
----------------------------------
#include <iostream>
#include <opencv2/opencv.hpp>
#include <ueye.h>
struct Camera
{
HIDS hCam;
char* pImageMem;
int nImageID;
int RenderMode;
SENSORINFO SensorInfo;
CAMINFO CamInfo;
int nBitsPerPixel;
bool bLive;
bool bOpened;
};
/*
借鉴IDS自带的SDK开发包进行相机出图
时间:2018/07/18
*/
int main()
{
HIDS hCam = 0;
SENSORINFO stSensorInfo;
CAMINFO stCamInfo;
int flag = 0,memId=0;
flag = is_InitCamera(&hCam, NULL);
if (flag == 0)
{
is_GetSensorInfo(hCam, &stSensorInfo);
is_GetCameraInfo(hCam, &stCamInfo);
is_SetColorMode(hCam, IS_CM_SENSOR_RAW8);
char *imgMem;
imgMem = (char*)malloc(stSensorInfo.nMaxHeight*stSensorInfo.nMaxWidth*sizeof(char));
memset(imgMem, 0, stSensorInfo.nMaxHeight*stSensorInfo.nMaxWidth*sizeof(char));
is_AllocImageMem(hCam, stSensorInfo.nMaxWidth, stSensorInfo.nMaxHeight, 8, &imgMem, &memId);
is_SetImageMem(hCam, imgMem, memId);
is_CaptureVideo(hCam, IS_WAIT);
is_StopLiveVideo(hCam,IS_WAIT);//2018/08/07 添加内容
#if 1 //测试buffer
cv::Mat img = cv::Mat((int)stSensorInfo.nMaxHeight, (int)stSensorInfo.nMaxWidth, CV_8UC1);
for (int i = 0; i < (int)stSensorInfo.nMaxHeight; i++)
{
for (int j = 0; j < (int)stSensorInfo.nMaxWidth; j++)
{
img.at<uchar>(i, j) = imgMem[i*(int)stSensorInfo.nMaxWidth + j];
}
}
#endif
is_FreeImageMem ( hCam, imgMem, memId );
is_ExitCamera(hCam);
}
else
{
std::cout << "相机初始化失败!" << std::endl;
std::cin.get();
return 0;
}
std::cin.get();
return 0;
}
----------------------------------
后续再进行相机属性控制,以及双相机的二次开发。
----------------------------------
2018/08/07 更新说明:
在代码中添加了停止视频帧函数,便于在进行连续抓图时,不会出现丢帧的情况!
连续抓图的代码如下:
---------------------------------
#include <iostream>
#include <opencv2/opencv.hpp>
#include <ueye.h>
struct Camera
{
HIDS hCam;
char* pImageMem;
int nImageID;
int RenderMode;
SENSORINFO SensorInfo;
CAMINFO CamInfo;
int nBitsPerPixel;
bool bLive;
bool bOpened;
};
/*
借鉴IDS自带的SDK开发包进行相机出图
2018/08/06 增加循环测试
时间:2018/08/06
*/
int main()
{
HIDS hCam = 0;
SENSORINFO stSensorInfo;
CAMINFO stCamInfo;
int flag = 0,memId=0;
flag = is_InitCamera(&hCam, NULL);
int n = 80;//连续抓80帧
while (n-- > 0)
{
if (flag == 0)
{
is_GetSensorInfo(hCam, &stSensorInfo);
is_GetCameraInfo(hCam, &stCamInfo);
is_SetColorMode(hCam, IS_CM_SENSOR_RAW8);
char *imgMem;
imgMem = (char*)malloc(stSensorInfo.nMaxHeight*stSensorInfo.nMaxWidth*sizeof(char));
memset(imgMem, 0, stSensorInfo.nMaxHeight*stSensorInfo.nMaxWidth*sizeof(char));
is_AllocImageMem(hCam, stSensorInfo.nMaxWidth, stSensorInfo.nMaxHeight, 8, &imgMem, &memId);
is_SetImageMem(hCam, imgMem, memId);
is_CaptureVideo(hCam, IS_WAIT);
is_StopLiveVideo(hCam, IS_WAIT);
#if 1 //测试buffer
//Sleep(800);
cv::Mat img = cv::Mat((int)stSensorInfo.nMaxHeight, (int)stSensorInfo.nMaxWidth, CV_8UC1);
for (int i = 0; i < (int)stSensorInfo.nMaxHeight; i++)
{
for (int j = 0; j < (int)stSensorInfo.nMaxWidth; j++)
{
img.at<uchar>(i, j) = imgMem[i*(int)stSensorInfo.nMaxWidth + j];
}
}
#endif
cv::imwrite("F:\\1.bmp", img);
is_FreeImageMem ( hCam, imgMem, memId );//释放内存 20180820添加
}
else
{
std::cout << "相机初始化失败!" << std::endl;
std::cin.get();
return 0;
}
}
is_ExitCamera(hCam);
std::cin.get();
return 0;
}
---------------------------------
IDS相机SDK二次开发相关推荐
- C/C++实战——基于Qt框架和visual studio的海康相机SDK二次开发
最近在进行机器视觉系统的搭建,积累了经验,想和大家讨论.互相学习.相机是图像的来源.为了搭建视觉系统,完成图像分析.机器视觉任务,需要编程控制相机按工作所需的曝光.增益和帧率同步采集和存储图像.工业相 ...
- 海康相机-SDK二次开发(NVR)-多相机IPCamera连接采集-opencv图像格式转换
主要功能: 海康SDK开发,通过连接NVR,实现连接NVR的2个相机同时采集(多线程),并进行opencv图像格式转换. 关键技术点: 1.回调函数 2.YV12->oepncv图像格式转换 3 ...
- 海康相机SDK二次开发的一些报错和解决办法
1.MV_OK 0x00000000 成功,无错误 解析:-2147483648/0x80000000正常状态返回,执行成功 2.MV_E_HANDLE 0x80000000 错误或无效的句 解析:- ...
- 大恒相机sdk二次开发 _c#从0开始新建winform窗体实现相机基础采集功能
1.打开VS, 这里安装的是VS2019, 新建winform窗体. 2.打开水星驱动安装目录下的例程作为参考. 水星驱动安装包可以在大恒图像官网下载最新版本, 安装目录不要有中文路径, 安装之前把杀 ...
- 海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一)
最近在做一个项目,涉及到工业相机,需要对其进行二次开发.相机方面选择了海康威视,网上关于海康威视工业相机SDK的开发资料很少,官方文档里面虽然写的是支持C++开发的,但其实是C.自己也摸索了一段时间, ...
- 海康威视SDK二次开发通过云台参数设置控制摄像机的位置
海康威视SDK二次开发通过云台参数设置控制摄像机的位置 由于最近在开发海康威视摄像头,特此记录一下通过云台参数控制摄像机的位置,我这里是通过properties配置文件输入的参数,也可以不用配置文件, ...
- Linux下海康威视工业相机的SDK二次开发
1.客户端软件MVS的安装 1.1安装包的下载和解压 去 官网 下载两个软件安装,分别是客户端和开发环境.(这里我们下载V2.1.1(Linux)和Runtime组件包(Linux)): 工业相机文档 ...
- 海康威视工业相机SDK二次开发
海康威视工业相机SDK二次开发 好气,第一次写文章,结果没不小心保存关掉,什么都没了. 本人是一名在读研究生,被导师分配了做项目中海康工业相机的二次开发.实现的需求是:实现八个相机同时打开视频,并且分 ...
- 海康Camera MVS Linux SDK二次开发封装ROS packge过程记录(c++)
Livox Lidar + HIKROBOT Camera系列 最近在开发相机和激光雷达融合的slam算法,主要用于三维重建,想实时的得到彩色点云地图,传感器选择了海康威视的工业相机和大疆的固态激光 ...
最新文章
- NoSQL数据库四大分类
- [图]为C# Windows服务添加安装程序
- 基于MINA框架快速开发网络应用程序
- java 多个监听_java中监听一个客户端怎么做?监听多个怎么做?
- 那些原生JavaScript
- git add 所有修改文件_Git管理修改、撤销和删除文件
- continue语句只用于循环语句中_Java之循环语句、条件判断语句(三目运算符)、break、continue...
- 用winformz时间格式不正确_煮八爪鱼,有人用冷水,有人用开水,大厨:都不对,教你正确做法...
- 关于jacob支持BSTR类型的经验总结
- CSU 2151 集训难度(线段树)
- 《Clojure程序设计》——导读
- R语言和Python交互
- python re sub用法_python re模块常见使用方法整理
- 2022全球「高被引科学家」榜单出炉!中国内地1169人入选,继续紧追美国
- 杀死一只知更鸟 摘抄
- Word 中,字体无法调整的解决方法
- 一行 Python 能实现什么丧心病狂的功能?
- 怎么把线稿提取出来_99%的人不知道!教你怎么提取绘画作品的线稿!
- win7计算机无法连接投影仪,笔记本win7系统连接投影仪显示没信号如何解决?
- 在matlab中建模基准地形和山峰
热门文章
- SetBkMode(TRANSPARENT) 设置透明窗口
- SVM推导过程解读笔记
- MySQL-基础-DDL语句(一)-数据库的操作
- php redirect导致重复请求,微信公众平台网页登录授权多次重定向跳转,导致code使用多次问题...
- window的onload事件和domcontentloaded
- 数码管显示的温湿度计——DHT11
- 如何禁止不必要的 HTTP 方法,如DELETE,PUT,OPTIONS等协议访问应用程序
- 程序员到底有没有必要考研?
- 微信小程序文学小说阅读销售网站
- Python问题:bash: syntax error near unexpected token `newline'