配置3D相机曝光

写在前面

  • 本人从事机器视觉细分的3D相机行业。编写此系列文章主要目的有:

    • 1、便利他人应用3D相机,本系列文章包含公司所出售相机的SDK的使用例程及详细注释;
    • 2、促进行业发展及交流。
  • 欢迎与我深入交流:微信号:liu_zhisensor

配置相机曝光及API说明

相机曝光说明

  • 知微传感Dkam系列3D相机具备灵活的曝光配置功能,广泛适应各种复杂的场景,如同一场景内存在反射率相差太大的两种物体
  • Dkam系列3D相机有自动曝光和手动曝光两种曝光模式
    • 自动曝光模式下不允许配置曝光时间
    • 手动曝光模式下允许自由配置曝光重数(重复曝光的次数)和曝光时间
      • 多重曝光策略下,曝光时间渐变方法分为等差和等比,即只给定高曝光时间和低曝光时间

        • 比如,配置为3重曝光,低曝光值为10000,高曝光值为40000,在等差模式下,3重曝光的曝光时间分别为10000us、25000us、40000us,在等比模式下,3重曝光的曝光时间分别为10000us、20000us、40000us
      • 多重曝光利用朴素的叠加思想,将每重曝光的有效点进行叠加得到有效点最多的数据
      • 多重曝光的曝光重数上限根据型号不同
    • 曝光时间的上限为100000,单位为us
#mermaid-svg-0Qee2LvX9XVFdUwD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0Qee2LvX9XVFdUwD .error-icon{fill:#552222;}#mermaid-svg-0Qee2LvX9XVFdUwD .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-0Qee2LvX9XVFdUwD .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-0Qee2LvX9XVFdUwD .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-0Qee2LvX9XVFdUwD .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-0Qee2LvX9XVFdUwD .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-0Qee2LvX9XVFdUwD .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-0Qee2LvX9XVFdUwD .marker{fill:#333333;stroke:#333333;}#mermaid-svg-0Qee2LvX9XVFdUwD .marker.cross{stroke:#333333;}#mermaid-svg-0Qee2LvX9XVFdUwD svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-0Qee2LvX9XVFdUwD .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-0Qee2LvX9XVFdUwD .cluster-label text{fill:#333;}#mermaid-svg-0Qee2LvX9XVFdUwD .cluster-label span{color:#333;}#mermaid-svg-0Qee2LvX9XVFdUwD .label text,#mermaid-svg-0Qee2LvX9XVFdUwD span{fill:#333;color:#333;}#mermaid-svg-0Qee2LvX9XVFdUwD .node rect,#mermaid-svg-0Qee2LvX9XVFdUwD .node circle,#mermaid-svg-0Qee2LvX9XVFdUwD .node ellipse,#mermaid-svg-0Qee2LvX9XVFdUwD .node polygon,#mermaid-svg-0Qee2LvX9XVFdUwD .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-0Qee2LvX9XVFdUwD .node .label{text-align:center;}#mermaid-svg-0Qee2LvX9XVFdUwD .node.clickable{cursor:pointer;}#mermaid-svg-0Qee2LvX9XVFdUwD .arrowheadPath{fill:#333333;}#mermaid-svg-0Qee2LvX9XVFdUwD .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-0Qee2LvX9XVFdUwD .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-0Qee2LvX9XVFdUwD .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-0Qee2LvX9XVFdUwD .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-0Qee2LvX9XVFdUwD .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-0Qee2LvX9XVFdUwD .cluster text{fill:#333;}#mermaid-svg-0Qee2LvX9XVFdUwD .cluster span{color:#333;}#mermaid-svg-0Qee2LvX9XVFdUwD div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-0Qee2LvX9XVFdUwD :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

曝光模式
自动曝光
单重曝光
手动曝光
单重曝光
多重曝光
等差曝光时间
等比曝光时间
  • Dkam系列3D相机未作任何配置时默认自动曝光和单重曝光
  • 3D相机数据输出的帧率随曝光时间的变化而变化,曝光重数越大,曝光时间越长,帧率越慢

配置流程

#mermaid-svg-H1hnUtXVvwGp2X0K {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-H1hnUtXVvwGp2X0K .error-icon{fill:#552222;}#mermaid-svg-H1hnUtXVvwGp2X0K .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-H1hnUtXVvwGp2X0K .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-H1hnUtXVvwGp2X0K .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-H1hnUtXVvwGp2X0K .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-H1hnUtXVvwGp2X0K .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-H1hnUtXVvwGp2X0K .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-H1hnUtXVvwGp2X0K .marker{fill:#333333;stroke:#333333;}#mermaid-svg-H1hnUtXVvwGp2X0K .marker.cross{stroke:#333333;}#mermaid-svg-H1hnUtXVvwGp2X0K svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-H1hnUtXVvwGp2X0K .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-H1hnUtXVvwGp2X0K .cluster-label text{fill:#333;}#mermaid-svg-H1hnUtXVvwGp2X0K .cluster-label span{color:#333;}#mermaid-svg-H1hnUtXVvwGp2X0K .label text,#mermaid-svg-H1hnUtXVvwGp2X0K span{fill:#333;color:#333;}#mermaid-svg-H1hnUtXVvwGp2X0K .node rect,#mermaid-svg-H1hnUtXVvwGp2X0K .node circle,#mermaid-svg-H1hnUtXVvwGp2X0K .node ellipse,#mermaid-svg-H1hnUtXVvwGp2X0K .node polygon,#mermaid-svg-H1hnUtXVvwGp2X0K .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-H1hnUtXVvwGp2X0K .node .label{text-align:center;}#mermaid-svg-H1hnUtXVvwGp2X0K .node.clickable{cursor:pointer;}#mermaid-svg-H1hnUtXVvwGp2X0K .arrowheadPath{fill:#333333;}#mermaid-svg-H1hnUtXVvwGp2X0K .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-H1hnUtXVvwGp2X0K .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-H1hnUtXVvwGp2X0K .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-H1hnUtXVvwGp2X0K .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-H1hnUtXVvwGp2X0K .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-H1hnUtXVvwGp2X0K .cluster text{fill:#333;}#mermaid-svg-H1hnUtXVvwGp2X0K .cluster span{color:#333;}#mermaid-svg-H1hnUtXVvwGp2X0K div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-H1hnUtXVvwGp2X0K :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

连接相机
配置相机为自动曝光或不配置
配置相机为手动曝光
配置相机为单重曝光
配置相机曝光时间
配置相机为多重曝光
配置相机曝光重数
配置相机曝光时间渐变方法
配置相机的高,低曝光时间
采集数据,保存数据
结束

相关API

  • SetAutoExposure配置相机的曝光模式

    • int SetAutoExposure(Camera_Object_C* camera_obj, int status,int camera_cnt)
    • 函数功能: 设置曝光模式
    • 参 数: camera_obj:相机的结构体指针; status:曝光模式选择(0 自动曝光 1 手动曝光) camera_cn:CMOS 编号(0:红外 1:RGB)
    • 返回值: 0:设置正常 非 0:设置失败
  • SetMutipleExposure配置相机曝光重数
    • int SetMutipleExposure(Camera_Object_C* camera_obj, int stat
    • 函数功能: 设置曝光重数
    • 参 数: camera_obj:相机的结构体指针;status:曝光类型选择(1 单曝光 大于 1(整数)多重曝光)
    • 返回值: 0:设置成功;非 0:设置失败
  • SetExposureTime配置相机曝光时间
    • int SetExposureTime(Camera_Object_C* camera_obj,int utime, int camera_cnt)
    • 函数功能: 设置指定相机的曝光时间
    • 参 数: camera_obj:相机的结构体指针;utime:曝光时间: 红外镜头范围 1000 - 100000us, RGB 镜头范围 1000 - 56000us, 默认 16600us; camera_cnt:CMOS 编号(0 红外 1RGB)
    • 返回值: 0:设置成功 非 0:设置失败
  • SetMultiExpoMode 配置相机曝光时间的渐变方法
    • int SetMultiExpoMode(int mode)
    • 函数功能:设置相机多重曝光模式
    • 参数:mode:多重曝光模式(0/等差 1/等比)
    • 返回值:0 设置成功 非 0 设置失败
  • SetMultiExpoMin 配置起始曝光时间
    • int SetMultiExpoMin(Camera_Object_C* camera_obj, int value)
    • 函数功能:设置相机多重曝光起点
    • 参数: camera_obj:相机的结构体指针 int value:范围:1000-100000,us
    • 返回值:0 设置成功 非 0 设置失败
  • SetMultiExpoMax 配置起始曝光时间
    • int SetMultiExpoMax(Camera_Object_C* camera_obj, int value)
    • 函数功能:设置相机多重曝光起点
    • 参数: camera_obj:相机的结构体指针 int value:范围:1000-100000,us
    • 返回值:0 设置成功 非 0 设置失败

例程及注释

  • 本例程基于WIN10+VisualStudio2019+DkamSDK_1.6.71,采用C++语言
  • DkamSDK的配置方法请参考SDK说明书
  • 本例程在D132S型相机上验证
  • 本例针对点云的效果,仅示例了红外的曝光配置
// Exposure.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <cstring>//DkamSDK
#include"dkam_discovery.h"
#include"dkam_gige_camera.h"
#include"dkam_gige_stream.h"int main()
{std::cout << "Hello ZhiSENSOR!"<<std::endl;std::vector<DiscoveryInfo> discovery_info;Discovery discovery;GigeCamera camera;GigeStream* pointgigestream = NULL;GigeStream* graygigestream = NULL;GigeStream* rgbgigestream = NULL;std::vector<DiscoveryInfo>().swap(discovery_info);//**********************************************查询相机****************************************************//查询局域网内的3D相机int camer_num = discovery.DiscoverCamera(&discovery_info);std::cout << "局域网内共有" << camer_num << "台相机" << std::endl;//显示局域网内相机的IPfor (int i = 0; i < camer_num; i++){std::cout << "局域网内相机的IP为:" << discovery.ConvertIpIntToString(discovery_info[i].camera_ip) << std::endl;}//**********************************************连接相机****************************************************//选定相机int k = -1;for (int i = 0; i < camer_num; i++){if (strcmp((discovery.ConvertIpIntToString(discovery_info[i].camera_ip)), "192.168.30.35") == 0){k = i;std::cout << "将连接第" << k + 1 << "台相机" << std::endl;}else{std::cout << "局域网内无该IP的相机" << std::endl;}}//连接相机int connect = camera.CameraConnect(&discovery_info[k]);if (connect == 0){std::cout << "成功连接相机" << std::endl;}else{std::cout << "连接相机失败,请检查!!!" << std::endl;}//**********************************************配置相机****************************************************if (connect == 0){//获取当前红外相机的宽和高int width = -1;int height = -1;std::cout << "获取相机红外图的宽和高。。。" << std::endl;int height_gray = camera.GetCameraHeight(&height, 0);int width_gray = camera.GetCameraWidth(&width, 0);std::cout << "camera  Grey width:" << width << "---Grey height:" << height << std::endl;//获取当前RGB相机的宽和高,如相机不支持则无此项int width_RGB = -1;int height_RGB = -1;std::cout << "获取相机RGB图的宽和高。。。" << std::endl;int height_rgb = camera.GetCameraHeight(&height_RGB, 1);int width_rgb = camera.GetCameraWidth(&width_RGB, 1);std::cout << "camera RGB width:" << width_RGB << "-----RGB height:" << height_RGB << std::endl;//定义点云数据大小PhotoInfo* point_data = new PhotoInfo;point_data->pixel = new char[width * height * 6];memset(point_data->pixel, 0, width * height * 6);//定义红外数据大小PhotoInfo* gray_data = new PhotoInfo;gray_data->pixel = new char[width * height];memset(gray_data->pixel, 0, width * height);//定义RGB数据大小PhotoInfo* RGB_data = new PhotoInfo;RGB_data->pixel = new char[width_RGB * height_RGB * 3];memset(RGB_data->pixel, 0, width_RGB * height_RGB * 3);//设置相机曝光模式int gray = 0;    //红外和点云int ExpSta = 1;  //0为自动曝光,1为手动曝光if (ExpSta == 0)//自动曝光的配置{int set_expusure = camera.SetAutoExposure(ExpSta, gray);if (set_expusure == 0){std::cout << "设置点云和红外图为自动曝光模式成功!" << std::endl;}else{std::cout << "设置点云和红外图为走动曝光模式失败!!!" << std::endl;}}if (ExpSta == 1)//手动曝光的配置{int set_expusure = camera.SetAutoExposure(ExpSta, gray);if (set_expusure == 0){std::cout << "设置点云和红外图为手动曝光模式成功!" << std::endl;}else{std::cout << "设置点云和红外图为手动曝光模式失败!!!" << std::endl;}//配置曝光重数int MltNum = 3;if (MltNum == 1)//单重曝光{int set_mulitexposure = camera.SetMutipleExposure(MltNum);if (set_mulitexposure == 0){std::cout << "设置点云和红外图单重曝光成功!" << std::endl;}else{std::cout << "设置点云和红外图单重曝光失败!!!" << std::endl;}//配置曝光时间int ExpuTime = 10000;int ExpuTimStat = camera.SetExposureTime(ExpuTime,gray);if (ExpuTimStat == 0){std::cout << "设置点云和红外曝光时间成功!" << std::endl;std::cout << "设置点云和红外曝光时间为:" << ExpuTime << "us" << std::endl;}else{std::cout << "设置点云和红外曝光时间失败!!!" << std::endl;}}if (MltNum > 1)//多重曝光{int set_mulitexposure = camera.SetMutipleExposure(MltNum);if (set_mulitexposure == 0){std::cout << "设置点云和红外图多重曝光成功!" << std::endl;std::cout << "点云和红外图曝光重数为:" << MltNum << std::endl;}else{std::cout << "设置点云和红外图多重曝光失败!!!" << std::endl;}//配置曝光时间渐变方法int Arithmetic = 0;  //等差int Geometrics = 1;  //等比int ExpuMeth = Arithmetic; //配置为int set_multiexpomode = camera.SetMultiExpoMode(ExpuMeth);if (set_multiexpomode == 0){std::cout << "设置曝光时间渐变方法成功!" << std::endl;if (ExpuMeth == 0){std::cout << "曝光时间渐变方法为:等差" << std::endl;}else{std::cout << "曝光时间渐变方法为:等比" << std::endl;}}else{std::cout << "设置曝光时间渐变方法失败!!!" << std::endl;}//配置起始曝光时间int MinExpu = 2000;//usint set_multiexpomin = camera.SetMultiExpoMin(MinExpu);if (set_multiexpomin == 0){std::cout << "多重曝光起始曝光时间设置成功。" << std::endl;std::cout << "多重曝光起始曝光时间为"<< MinExpu <<"us" << std::endl;}else{std::cout << "多重曝光起始曝光时间设置失败!!!" << std::endl;}//配置终止曝光时间int MaxExpu = 20000;//usint set_multiexpomax = camera.SetMultiExpoMax(MaxExpu);if (set_multiexpomax == 0){std::cout << "多重曝光终止曝光时间设置成功。" << std::endl;std::cout << "多重曝光终止曝光时间为" << MaxExpu << "us" << std::endl;}else{std::cout << "多重曝光终止曝光时间设置失败!!!" << std::endl;}}}//**********************************************打开数据通道****************************************************//开启数据流通道(0:红外 1:点云 2:RGB)int stream_gray = camera.StreamOn(0, &graygigestream);if (stream_gray == 0){std::cout << "红外图通道打开成功!" << std::endl;}else{std::cout << "红外图通道打开失败!!!" << std::endl;}int stream_point = camera.StreamOn(1, &pointgigestream);if (stream_point == 0){std::cout << "点云通道打开成功!" << std::endl;}else{std::cout << "点云通道打开失败!!!" << std::endl;}int stream_RGB = camera.StreamOn(2, &rgbgigestream);if (stream_RGB == 0){std::cout << "RGB图通道打开成功!" << std::endl;}else{std::cout << "RGB图通道打开失败!!!" << std::endl;}//开始接受数据int acquistion = camera.AcquisitionStart();if (acquistion == 0){std::cout << "可以开始接受数据!" << std::endl;}//刷新缓冲区数据pointgigestream->FlushBuffer();graygigestream->FlushBuffer();rgbgigestream->FlushBuffer();//**********************************************等待相机上传数据***************************************//采集点云int capturePoint = -1;capturePoint = pointgigestream->TimeoutCapture(point_data, 3000000);if (capturePoint == 0){std::cout << "点云接收成功!" << std::endl;}else{std::cout << "点云接收失败!!!" << std::endl;std::cout << "失败代号:" << capturePoint << std::endl;}//采集红外int captureGray = -1;captureGray = graygigestream->TimeoutCapture(gray_data, 3000000);if (captureGray == 0){std::cout << "红外接收成功!" << std::endl;}else{std::cout << "红外接收失败!!!" << std::endl;std::cout << "失败代号:" << capturePoint << std::endl;}//采集RGBint captureRGB = -1;captureRGB = rgbgigestream->TimeoutCapture(RGB_data, 3000000);if (captureRGB == 0){std::cout << "RGB接收成功!" << std::endl;}else{std::cout << "RGB接收失败!!!" << std::endl;std::cout << "失败代号:" << capturePoint << std::endl;}//**********************************************保存数据到本地***************************************//保存点云(pcd)int savepoint = camera.SavePointCloudToPcd(*point_data, (char*)"PointCloud.pcd");if (savepoint == 0){std::cout << "点云保存成功!" << std::endl;}else{std::cout << "点云保存失败!!!" << std::endl;}//保存红外数据int savegray = camera.SaveToBMP(*gray_data, (char*)"Gray.bmp");if (savegray == 0){std::cout << "红外图保存成功!" << std::endl;}else{std::cout << "红外图保存失败!!!" << std::endl;}//保存RGB数据int savergb = camera.SaveToBMP(*RGB_data, (char*)"RGB.bmp");if (savergb == 0){std::cout << "RGB图保存成功!" << std::endl;}else{std::cout << "RGB图保存失败!!!" << std::endl;}//保存深度图int savedepth = camera.SaveDepthToPng(*point_data, (char*)"Depth.png");if (savedepth == 0){std::cout << "深度图保存成功!" << std::endl;}else{std::cout << "深度图保存失败!!!" << std::endl;}//**********************************************结束工作***************************************memset(point_data->pixel, 0, width * height * 6);memset(gray_data->pixel, 0, width * height);memset(RGB_data->pixel, 0, width_RGB * height_RGB * 3);//释放内存delete[] point_data->pixel;delete point_data;delete[] gray_data->pixel;delete gray_data;delete[] RGB_data->pixel;delete RGB_data;//关闭数据流通道 int streamoff_gray = camera.StreamOff(0, graygigestream);int streamoff_point = camera.StreamOff(1, pointgigestream);int streamoff_rgb = camera.StreamOff(2, rgbgigestream);//断开相机连接int disconnect = camera.CameraDisconnect();std::cout << "工作结束!!!!!!" << std::endl;}return (0);
}
  • 运行结果

结果对比

  • 各种曝光策略下的效果对比,当场景内有低反射物体时,自动曝光不能使低反射物体形成点云,当用手动曝光提高曝光使低反射物体有点云时,其余区域可能会产生过曝而没有点云,使用手动曝光多重曝光策略,则会起到很好的兼容效果。
  • RGB图片
  • 自动曝光
  • 手动曝光高曝光时间
  • 多重曝光

后记

  • 曝光模式和曝光时间配置好后,可通过相应查询曝光参数的API进行查询,以验证是否配置成功
  • 如有问题,欢迎与我深入交流:微信号:liu_zhisensor

知微传感Dkam系列3D相机SDK例程篇:配置相机曝光相关推荐

  1. 知微传感Dkam系列3D相机SDK例程篇:点云滤波

    3D相机点云滤波 写在前面 本人从事机器视觉细分的3D相机行业.编写此系列文章主要目的有: 1.便利他人应用3D相机,本系列文章包含公司所出售相机的SDK的使用例程及详细注释: 2.促进行业发展及交流 ...

  2. 知微传感Dkam系列3D相机SDK例程篇:获取内外参

    获取3D相机内外参 写在前面 本人从事机器视觉细分的3D相机行业.编写此系列文章主要目的有: 1.便利他人应用3D相机,本系列文章包含公司所出售相机的SDK的使用例程及详细注释: 2.促进行业发展及交 ...

  3. 知微传感Dkam系列3D相机OpenCV应用篇:OpenCV读入3D相机数据

    OpenCV读入3D相机数据 写在前面 本人从事机器视觉细分的3D相机行业.编写此系列文章主要目的有: 1.便利他人应用3D相机,本系列文章包含公司所出售相机的SDK的使用例程及详细注释: 2.促进行 ...

  4. 知微传感Dkam系列3D相机PCL应用篇:PCL读入3D相机数据

    PCL读入Dkam系列3D相机数据 写在前面 PCL(Point Cloud Library):是一个开源的算法库,用C++编写,是当前点云处理的得力工具: 在使用PCL处理3D相机输出的点云中,可能 ...

  5. 【Phase One SDK】飞思相机SDK的环境配置及调用

    一.环境说明 操作系统:win 10 开发环境:visual studio 2019 参考资料-官方文档:Welcome to the Phase One Software Development K ...

  6. 从零开发一款相机APP 第九篇: Camera2相机 录像功能实现

    [小驰笔记][Android Camera开发][Android Camera2][camera2] 本课程内容由 @小驰笔记 出品,欢迎关注,获取更多交流信息~ 欢迎访问个人博客:www.xiaoc ...

  7. 知微传感3D相机SDK开发文档一查找相机

    知微传感3D相机SDK开发文档一查找相机 主要对知微传感3D相机的SDK文件做一个介绍,大家一个界面显示程序包含图像的获得,相机的查找和链接 查找相机,通过UDP广播形式查找局域网相机 链接相机,通过 ...

  8. Basler相机Sdk采图的演示例程(C#)

    机器ppm不达标的情况下,往往对视觉的处理速度有变态的要求,为了争取处理时间最短,几十毫秒也要争取. halcon的接口是通用接口,其速度是比不上相机厂商自己相机配套的SDK的采图速度的. 下面程序运 ...

  9. DALSA网口线扫相机SDK开发详解例程(C#版)

    首先吐槽一句,官方的demos写的真的不好,坑爹啊.对于小白来说,开发官方demos为我所用太难了.为什么呢?因为它Dalsa的DALSA.SaperaLT.SapClassBasic.dll中,不仅 ...

最新文章

  1. JButton的setRollover出现的奇怪问题
  2. jsp java 分离,java与jsp页面的字符串拼接和拆分
  3. 排序算法汇总(转载收藏)
  4. spring消息队列_AmazonSQS和Spring用于消息传递队列
  5. php多文件上传存储到表,PHP 实现一种多文件上传的方法
  6. rabbitmq中的消息有id吗_RabbitMQ 如何实现对同一个应用的多个节点进行广播
  7. python 识别子串的位置_Python基础语法小白这一篇就足够了!
  8. 求解偏微分方程开源有限元软件deal.II学习--Step 7
  9. 仿微信图片选取、相机拍照—PhotoPicker(已集成GalleryView)
  10. 【009】Excel宏编程相关封装模块(边框细线、边框粗线、列宽、行高)_002_#VBA
  11. Matplotlib饼状图
  12. thinkphp6获取字符串中的中文首字母
  13. 华为鸿蒙OS精品资料汇总,持续更新中
  14. elk笔记16--aggs-Bucket Aggregations
  15. EDA实验·Libero设计流程
  16. DTV下的AD Switch和Hearing Impaired功能介绍
  17. 如何查询Lancome生产及保质期
  18. 【华为OD机试真题 C++】 勾股数元组【2022 Q4 | 100分】
  19. Hibernate3与EJB3的关系
  20. C++ 生产者消费者模式的简单实现

热门文章

  1. C - Mine Sweeper
  2. Unity3d打包图集
  3. 分享88个ASP.NET企业网站源码,总有一款适合您
  4. 分享各大CMS采集资源站网址合集
  5. 点击按钮效果(button)
  6. 解决Visual Studio中C++创建类时报错“未能返回新代码元素,可能是语法错误,新元素名:xxx”的问题
  7. 内码输入法手机版下载_windows7系统怎么下载和安装内码输入法?
  8. Vim 常用命令记录
  9. Linux FTP 425 Failed to establish connection问题解决
  10. 微信公众号原创检验,了解10个审核机制!