支持可变焦和自动变焦工业相机

news/2025/3/1 4:33:05/

介绍

这款工业相机支持软件控制镜头变焦,500万黑白/彩色 、带缓存、使用M12镜头,输入IO触发、输出IO等功能,使用USB2.0传输,最大帧率7.5FPS(500万像素),38x38单板设计,可扩展USB2.0接口板安装外壳,也可以直接使用模组,满足不同的需求。使用公司的CKSDK二次开发软件包即可控制镜头变焦,满足需要变焦的应用场景。

图片

单板模组正面
单板模组反面

双板模组正面
双板模组反面
带外壳可变焦相机

操作视频

鼠标控制变焦过程

代码编写

相机内部支持控制镜头变焦的功能,不支持自动变焦算法,需要通过上层软件实现自动变焦算法,下面通过C++写一个显示图像并可以控制变焦和手动触发自动变焦的demo程序。

/*下面是使用boost::unit_test框架结合opencv写的一个简单的自动聚焦的测试样例
在图像显示窗口按+键拉长焦距,按-键缩短焦距,按t键触发一次自动变焦
*/
BOOST_AUTO_TEST_CASE(camera_control_auto_focus)
{BOOST_TEST_MESSAGE("test camera auto focus...");HANDLE hCamera;int status = CameraInit(&hCamera, 0);BOOST_TEST_REQUIRE(status == 0);tSdkCameraCapbility capa;status = CameraGetCapability(hCamera, &capa);BOOST_TEST_REQUIRE(status == 0);UINT mediaType = capa.tDeviceCapbility.pBayerTypeDesc[0].iMediaType;status = CameraSetTriggerMode(hCamera, 0);BOOST_TEST_REQUIRE(status == 0);status = CameraSetFrameSpeed(hCamera, 2);BOOST_TEST_REQUIRE(status == 0);status = CameraSetAeState(hCamera, FALSE);BOOST_TEST_REQUIRE(status == 0);status = CameraSetExposureTime(hCamera, 30'000);BOOST_TEST_REQUIRE(status == 0);status = CameraSetIspOutFormat(hCamera, CAMERA_MEDIA_TYPE_BGR8);BOOST_TEST_REQUIRE(status == 0);SetToMaxResolution(hCamera);int min, max;status = CameraGetIntValue(hCamera, CONTROL_FOCUS_MIN_VALUE, &min);BOOST_TEST_REQUIRE(status == 0);status = CameraGetIntValue(hCamera, CONTROL_FOCUS_MAX_VALUE, &max);BOOST_TEST_REQUIRE(status == 0);int focus = 0;string cvWinName = "test camera focus";cv::namedWindow(cvWinName);double lastSobelValue = 0;int lastFocusValue = 0;int focusStep = 30;double avgSobelValue = 0;int recvCnt = 0;enum {AUTO_FOCUS_IDLE = 0,AUTO_FOCUS_BEGIN,AUTO_FOCUS_DETECT1,AUTO_FOCUS_DETECT2,AUTO_FOCUS_FINISH,} focusState = AUTO_FOCUS_IDLE;status = CameraGetIntValue(hCamera, CONTROL_FOCUS_VALUE, &lastFocusValue);BOOST_TEST_REQUIRE(status == 0);status = CameraPlay(hCamera);BOOST_TEST_REQUIRE(status == 0);while (true){stImageInfo imgInfo;BYTE *pImgData = CameraGetImageBufferEx(hCamera, &imgInfo, 1000);if (pImgData == NULL)continue;cv::Mat srcMat(imgInfo.iHeight, imgInfo.iWidth, CV_8UC3, pImgData);cv::Mat dstMat;ResizeMat(srcMat, dstMat);ShowTextInMat(dstMat, "y(yes)/n(no)/t(triger auto focus)");cv::imshow(cvWinName, dstMat);cv::Mat grayMat, sobelMat, sobelXMat, sobelYMat;cv::cvtColor(dstMat, grayMat, cv::COLOR_BGR2GRAY);cv::Sobel(grayMat, sobelXMat, CV_16S, 1, 0);sobelXMat = sobelXMat.mul(sobelXMat);cv::Sobel(grayMat, sobelYMat, CV_16S, 0, 1);sobelYMat = sobelYMat.mul(sobelYMat);cv::Scalar ss = cv::sum(sobelXMat + sobelYMat);recvCnt++;avgSobelValue = (avgSobelValue * (recvCnt - 1) + ss[0]) / recvCnt;BOOST_TEST_MESSAGE(boost::format("avg %f, last %lf") % avgSobelValue % lastSobelValue);if (focusState == AUTO_FOCUS_BEGIN){focusState = AUTO_FOCUS_DETECT1;lastSobelValue = avgSobelValue;lastFocusValue += focusStep;if (lastFocusValue >= max || lastFocusValue <= min){focusStep = -focusStep;lastFocusValue += focusStep;}CameraSetIntValue(hCamera, CONTROL_FOCUS_VALUE, lastFocusValue);BOOST_TEST_MESSAGE(boost::format("auto set focus value %d") % lastFocusValue);recvCnt = 0;avgSobelValue = 0.0;}else if (focusState == AUTO_FOCUS_DETECT1 || focusState == AUTO_FOCUS_DETECT2){if (recvCnt >= 5){if (avgSobelValue < lastSobelValue){focusStep = -focusStep;lastFocusValue += focusStep;if (lastFocusValue < min)lastFocusValue = min;else if (lastFocusValue > max)lastFocusValue = max;if (focusState == AUTO_FOCUS_DETECT1)focusState = AUTO_FOCUS_DETECT2;elsefocusState = AUTO_FOCUS_FINISH;}else{lastFocusValue += focusStep;if (lastFocusValue <= min){lastFocusValue = min;focusStep = -focusStep;}else if (lastFocusValue >= max){lastFocusValue = max;focusStep = -focusStep;}}CameraSetIntValue(hCamera, CONTROL_FOCUS_VALUE, lastFocusValue);BOOST_TEST_MESSAGE(boost::format("auto set focus value %d") % lastFocusValue);lastSobelValue = avgSobelValue;recvCnt = 0;avgSobelValue = 0.0;}}int key = cv::waitKey(1);if (key > 0){if (key == 'y')break;else if (key == 'n'){BOOST_ERROR("test manual exposure failed.");break;}else if (key == '+' || key == '='){focus += 100;if (focus > max)focus = max;CameraSetIntValue(hCamera, CONTROL_FOCUS_VALUE, focus);BOOST_TEST_MESSAGE(boost::format("set focus value %d") % focus);}else if (key == '-'){focus -= 100;if (focus < min)focus = min;CameraSetIntValue(hCamera, CONTROL_FOCUS_VALUE, focus);BOOST_TEST_MESSAGE(boost::format("set focus value %d") % focus);}else if (key == 't'){if (focusState == AUTO_FOCUS_IDLE || focusState == AUTO_FOCUS_FINISH){focusState = AUTO_FOCUS_BEGIN;recvCnt = 0;avgSobelValue = 0.0;}}}}status = CameraPause(hCamera);BOOST_TEST_REQUIRE(status == 0);cv::destroyAllWindows();CameraUnInit(hCamera);
}

结语

欢迎大家使用云钥科技的工业相机,有USB2.0、USB3.0、GIGE网络工业相机,支持软硬件定制开发,还提供贴心技术支持服务。


http://www.ppmy.cn/news/241846.html

相关文章

MHD-HD20AY高清20倍变焦摄像头VGA接口

产品概述&#xff1a; 高清1080P 20倍视频会议摄像机MHD-HD20A 是我司主要针对视频会议行业专业研发的通讯型彩色一体化摄像机。采用SONY 1/2.8英寸 Progressive CMOS 350万&#xff0c;最高分辨率通达到1080p/60/50,20倍光学变焦镜头&#xff0c;同时内置了高速全方位云台…

腾创秒会达MHD-CHD40A 20倍光学变焦摄像机

视频特性&#xff1a; 1080P高清视频&#xff0c; 20倍变焦&#xff0c;可实现远距离的特写抓拍 支持USB 2.0即插即用免驱接入&#xff0c;连接简洁&#xff0c;可适配各类会议和视频应用程序 HDMI主流接口&#xff0c;可支持主流设备的对接匹配 355度旋转云台&#xff0c;…

STM32开发(CubeMX+HAL)——点灯(轮询、中断)

目录 1.CubeMX生成工程文件 2.点灯1——轮询 3.点灯2——中断 3.1CubeMX配置时钟 3.2中断和事件简介 3.3配置GPIO口 3.4使能中断 3.5配置工程 3.6中断函数编写 1.CubeMX生成工程文件 1.1新建工程 1.2输入STM32C8T6选择芯片 1.3双击芯片 1.4 选择System Core—SYS——…

光学变焦----景深=景深远界-景深近界

http://detail.zol.com.cn/product_param/index232.html 景深近界焦距的平方*物距/&#xff08;焦距的平方可容许弥散圆直径*光圈系数*物距&#xff09; 景深远界焦距的平方*物距/&#xff08;焦距的平方-可容许弥散圆直径*光圈系数*物距&#xff09; 景深景深远界-景深近界…

MS41908|一体机镜头变倍驱动芯片|3倍|10倍|18倍|22倍丨30倍光学变焦镜头驱动|AN41908

一体机镜头变倍驱动芯片|3倍|10倍|18倍|光学变焦镜头驱动|AN41908替代并优化&#xff01; 联系热线&#xff1a;13556840586 QQ&#xff1a;3485627971 网络摄像机监控摄像机用镜头驱动芯片&#xff08;内置光圈控制&#xff09; MS41908描述 MS41908M 是一款用于网络摄像机…

其实手机自带50倍变焦!这个隐藏“望远镜”功能,你们都知道吗

手机摄像头现在越来越受用户关注了&#xff0c;华为p30 Pro的50倍变焦是不是让你感到惊艳呢&#xff1f; 其实每台智能手机中都自带30倍变焦&#xff0c;只是它隐藏的比较深罢了。 今天笔者就教大家开启这个功能&#xff0c;让你的手机瞬间变成"望远镜"哦。 前提介绍…

Zemax光学设计(十)——变焦镜头设计

变焦镜头原理 在基础光学理论中像面大小、视场和焦距三者有 如下关系&#xff1a; 变焦镜头的变焦倍数为长焦距和短焦距比值&#xff0c;也称为倍率。 在变焦过程中镜头的相对孔径保持不变&#xff0c;但对于实际的高变倍比系统&#xff0c;由于外形尺寸不希望过大或二级光谱校…

Zemax学习笔记(11) - 变焦镜头设计实例

Zemax学习笔记&#xff08;11&#xff09; - 变焦镜头设计实例 1.概述2.设计2.1设计要求2.2 设计过程2.3 变焦镜头的优化设置 3. 总结 1.概述 成像镜头包括定焦镜头和变焦镜头&#xff0c;我们在日常生活中使用的光学系统大多是可以变焦的&#xff0c;比如手机镜头、专业相机的…