使用Sony相机最快乐的一点就是开放SDK,所以让相机用作工业用途有了可以实现的软件基础,但是我C++写的太恶心了,只能先看API的参考,对SDK有大致的了解后,开始编写App。
最后就是我小相机了
一般是搭配嵌入式的平台一起,ESP32估计是没有戏了
注意要先准备好设备的回调函数,相当于一个后台的线程来管理相机和主机的连接状态。而且这个回调函数也会调用别的回调函数,完成提醒等工作。
连接过程是异步的,这个图的左边的线是,用户的线程,中间这个线是SDK的API,右边是SDK和相机内部的线程。
这个远程识别的常数是300,是固定的
这个是初始化的函数,init方法里面的0参数是固定的
这个是释放资源,气死我了后面括号没有成对!!!
在相机断开连接以后执行这个函数是正确的
枚举设别到的相机
返回的info函数里面包含了有的相机的列表,GetCameraObjectInfo这个函数是会反映相机的详细信息。最后不用的时候释放资源。
看下面这个连接的函数,第一个参数是要连接的相机对象,就是上文检测到的函数对象。接着参数是一个回调函数,用来通知SDK的通信事件,第三个参数是控制远程模式的。
具体使用的时候是这样的
SDK连接状态的变化
连接多个相机时候,每一个handle都可以控制一个相机
这个可能看的更清晰一些
上面是连接,下面是控制
获得相机属性,三参数:第一个是设备的handle,第二个是指向属性的指针,第三个是这个属性列表的大小。
成功接收的属性列表:
都在此处保存
这个函数可以改变相机的属性,而且这个函数不是同步的调用,执行后是送入发送队列的。
属性不会因为状态而改变,SDK也不通知你干啥,所以应该延时读取属性,然后读取状态,进行页面状态更新,也就是说,这个过程需要开发者自己处理。
SDK::SendCommand(m_device_handle, SDK::CrCommandId::CrCommandId_Release, SDK::CrCommandParam_Down);
命令的发送方法
酷
按下和松开
一个简单的demo
索引的命令ID,第一个是盛开,第二个是影片录制,取消对焦,媒体格式,媒体快速格式,取消内容传输等。
这个发送函数的优先级很高,所以我个人建议是经常的使用。
实时的获取试图,这个可能是一个很重要的事情
函数在这里
不解释了,Mac截图麻烦死了,后面是得到预览的图像信息
一个图像是一个类封装的,也有帧的大小,内部有图像大小
内部也简单的对数据类型进行了重构,32和64
这个是一个数据块的获取,Data回来的是一个数据指针,Size是一个数据的大小
一个小的demo,线获取一帧,得到数据内存的大小,接着把它复制过来。
传输的时候每一帧都会给一个增量的数字,用来判断要不要复制缓冲区,一看数字,复制过,就可以不工作了。
这个函数可以选择保存的位置
更改的保存路径