利用netmq在相机应用于unity之间传输图像数据

项目场景:

最近需要在unity里面接入工业相机图像,先说结论,unity可以直接调用basler的pylonc.net.dll驱动,直接读取basler相机;
海康以及大恒相机都不能直接调用官方dll;至于原因不太完全明白,可能是这两者的驱动dll都依赖于部分c++编写的dll;而c++写的dll属于非托管内存管理,所以不能直接被调用。
这里再解释一下,unity导入dll分2种,一类是c++ dll,通过dllimport调用;一类是c# dll,直接通过using 命名空间调用,很方便。
而这两家的dll都恰好属于两者都有的情况,既有c++部分,也有c#部分,导致既不能以dllimport调用,也不能以using 调用。


解决办法

这目前我只能通过单独打开一个相机exe,和unity进行进程通信,把数据传过去。

相机exe端
using NetMQ;
using NetMQ.Sockets;
//NetMQ方案
PublisherSocket publisher = new PublisherSocket();

   publisher.Options.SendHighWatermark = 4; // 最多缓存4帧未被订阅者接收
   publisher.Bind("tcp://*:5555");




        /// <summary>
        /// 回调函数,用于获取图像信息和显示图像
        /// </summary>
        /// <param name="obj">用户自定义传入参数</param>
        /// <param name="objIFrameData">图像信息对象</param>
        private void __CaptureCallbackPro(object objUserParam, IFrameData objIFrameData)
        {
   
   
            try
            {
   
   

                byte[] jpegBytes = ConvertIFrameDataToJpeg(objIFrameData);
                Logger.Log($"发送图像大小  jpegBytes: {
     
     jpegBytes.Length}");

                if (publisher.HasOut)  // 有订阅者连接时再发
                {
   
   
                    publisher.SendMoreFrame("image").SendFrame(jpeg
上一篇: transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
下一篇: 怎么重新分配roboflow数据集里面的训练集测试集验证集划分
清清紫金
博客等级 码龄7年 22粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清清紫金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值