关于无人机实时发送图像数据的问题

Posted

技术标签:

【中文标题】关于无人机实时发送图像数据的问题【英文标题】:Question about Real time Image data sending from drone 【发布时间】:2021-12-31 20:18:39 【问题描述】:

我有一个关于开发功能的问题...

我正在开发一种功能,可以实时接收来自 2 架无人机(Phantom 4 Advanced、Inspire 2)的图像数据并将它们合并。

为了测试,我尝试接收一张图片,但是接收时间很长..

这是我的代码...

camera.setShootPhotoMode(photoMode, new CommonCallbacks.CompletionCallback() 
            @Override
            public void onResult(DJIError djiError) 
                if (null == djiError) 
                    mHandler.postDelayed(new Runnable() 
                        @Override
                        public void run() 
                            camera.startShootPhoto(new CommonCallbacks.CompletionCallback() 
                                @Override
                                public void onResult(DJIError djiError) 
                                    if (djiError == null) 
                                        showToast("take photo: success");
                                        //start 시간 찍고
                                        Log.d("Start Time: ", Long.toString(System.currentTimeMillis()));
                                     else 
                                        showToast(djiError.getDescription());
                                    
                                
                            );
                        
                    , 2000);
                
            
        );
        //카메라 데이터 핸드폰에 저장
        camera.setMediaFileCallback(new MediaFile.Callback() 
            @Override
            public void onNewFile(@NonNull MediaFile mediaFile) 
                mediaFile.fetchFileData(file, "imageData", new DownloadListener<String>() 
                    @Override
                    public void onStart() 
                        showToast("Start downloading.");
                    

                    @Override
                    public void onRateUpdate(long l, long l1, long l2) 

                    

                    @Override
                    public void onRealtimeDataUpdate(byte[] bytes, long l, boolean b) 

                    

                    @Override
                    public void onProgress(long l, long l1) 

                    

                    @Override
                    public void onSuccess(String s) 
                        showToast("Download Succeed.");
                        //end time
                        Log.d("End Time: ", Long.toString(System.currentTimeMillis()));
                    

                    @Override
                    public void onFailure(DJIError djiError) 
                        if(djiError != null)
                            showToast("Failed..");
                            //end time
                            Log.d("End Time: ", Long.toString(System.currentTimeMillis()));
                        
                    
                );
                showToast("Image is successfully Saved");
                Log.d("Camera Image Transfer: ", "Succeed!");
            
        );

我使用 shootphotomode 和 setmediafilecallback 将其发送到我的手机..

还有其他实时接收数据的方法吗?

我一直很感激您花一些时间阅读我的问题。非常感谢您!

【问题讨论】:

【参考方案1】:

Fullres 照片需要很长时间,您对此无能为力。这永远不会是实时的。

如果您需要实时图像,则必须从 fpv 直播中抓取帧,该直播采用低分辨率和 720p/1080p h264 编码。 这是实时的,大约有 200 毫秒的延迟,就像您在 fpvview 中看到的那样。

我通常只是从 fpvview 导出一个位图,这是最快的方法,因为您不需要解码 264。使用该方法可以轻松读取 60fps。

【讨论】:

以上是关于关于无人机实时发送图像数据的问题的主要内容,如果未能解决你的问题,请参考以下文章

无人机飞行数据java版本api大疆无人机SpringBoot

无人机飞行数据java版本api大疆无人机SpringBoot

无人机飞行数据java版本api大疆无人机SpringBoot

PPT丨基于图像识别的无人机技术在新能源行业的应用

记录:如何用java对接大疆无人机实时视频传递飞行数据以json的形式传递,设置导航点,设置飞行任务

DIY一个基于树莓派和Python的无人机视觉跟踪系统