How to get image data with DJI OSDK using DJI matrice 600 pro - dji-sdk

I'm trying to do some image-processing using matrice 600pro(drone) with a jetson Xavier(mini computer) attached. A camera which has HDMI output function is attached to ronin-MX(gimbal) and data will be transmitted through SRW-60G(wireless video link using hdmi port). I thought using some functions in onboard sdk such like "/dji_sdk/main_camera_images (sensor_msgs/Image)"
(http://wiki.ros.org/dji_sdk)
can get image data easily, but I found that those functions are only available for M210 so I may cannot use these on my matrice 600pro.
Using a HDMI-USB converter may could solve this problem(make the camera-transmitter-receiver as a usb camera) but the converter is quite expensive and I'm not sure if there's better way to do this.
Any clue will be very helpful. Thank you!

as far as i know, osdk does not support video streaming for M600 series. The thing you can do is to use Ronnin gimbal with a 3rd party camera e.g ids/flir/matrixvision camera to direct connect to xavier. then based on this stream, do your processing.
If you need to stream the 3rd party video source down, its easier. Just use opencv imshow in full screen for current frame. This will output to desktop hdmi. Connect HDMI to the m600 video port. it will be stream down to your remote controller. THis is like a cheap version of the PSDK
Hope this will help you with your development work
Regards
Dr Yuan Shenghai

Related

Nativescript Audio and Video channels

I am new to nativescript was wondering if there are any plugins that would stream audio and video data just like we have navigator.getmedia on browser.
Use case being i am trying to implement voice security(not recognition) and facial recognition using tensorflow
Looks like you are already using tensorflow for machine learning part, if you are looking for just the camera access to capture a picture / video, you could use nativescript-camera or nativescript-videorecorder.
There is also nativescript-plugin-firebase, their ML Kit already supports face detection.

transmit screen buffer of a specific application to a remote system and reproduce image from that (in windows)

I know, there are apps out there like steam, Xbox that streams the game video onto network. What I want is the same thing but i need to make my own code for the purpose (open source), so that I may amend it for different applications without any copyright issues. I know Winsock programming and can transmit sample videos (mp4 files) but this thing of capturing the display on one system and producing it on some remote system is different and much complicated (i suppose). Plus, the streaming needs to be live with minimum delays. I have access to gigabit ethernet to address slow fps issues but first i need to transmit recieve a sample buffer
If someone please guide me on how to go about it
I think gstreamer is the closest thing to what you want. Look here and here for more info.
Also, look at ffmpeg.
The solution I found is OBS studio. It is open source which allows me to edit the source code as to fulfill my needs. However, I had to implement a nginx-rtmp server on the client end to receive the video. I then used vlc media player to stream the video received by the rtmp server. I have Gtx 960m installed so I implemented harware encoding which allowed me to stream 720p #60 fps over 100 Mbps ethernet cable. The results were drastic when I used software encoder (instead of hardware) before streaming.

Alternatives to libvlc for receiving HTTP based MJPEG video (from Axis IP Camera)?

I need to display a video stream from AXIS IP camera, which is streaming MJPEG video in HTTP. I have tried working with libvlc, but it has some buffering issues. So please suggest the list of alternatives for the same.
System Config: Ubuntu 11.10 operating system running on ATOM based ATMEL tablet.
Thanks in advance
BK
PS: I read a bit about gstreamer, but not sure if it's an overkill here.
After some research, found the following alternatives (for C++ on Linux platform) to receive/display video from an IP camera:
libvlc - nice framework with good documentation; but has buffering issues
opencv - an overkill for the scenario; but otherwise a very good choice
gstreamer - an excellent framework to work with streams; but poor documentation (but consumes more CPU as compared to libvlc)
As of now, narrowed it to gstreamer and got some code working. Can share it, if someone is interested. Any more suggestions/alternatives are welcome.

Exposure Lock in iSight

I am creating object-detection program on Mac.
I want to use iSight in manual exposure mode to improve detection quality.
I tried iGlasses & QTKit Capture to do that and it worked but program runs very slowly and unstable.
So I want to try other solution.
In PhotoBooth.app, iSight seemed to be run in fixed exposure mode so there might be a way to do that.
I read QTKit Capture documents and OpenCV documents but I couldn't find the answer.
If you have any ideas, please tell me.
Thank you.
QTKit Capture, as easy as it is to use, lacks the ability to set manual camera parameters like gain, brightness, focus, etc. If you were using a Firewire camera, I'd suggest looking into the libdc1394 library, which gives you control over all these values and more if you're using an IIDC Firewire camera (like the old external iSight). I use this library for video capture from, and control of, CCD cameras on a robotics platform.
However, I'm guessing that you're interested in the internal iSight camera, which is USB. Wil Shipley briefly mentions control of parameters on internal USB iSights in his post "Frozen in Carbonite", but most of the Carbon code he lays out controls those values in IIDC Firewire cameras.
Unfortunately, according to this message in the QuickTime mailing list by Brad Ford, it sounds like you can't programmatically control anything but saturation and sharpness on builtin iSights through the exposed interfaces. He speculates that iGlasses is post-processing the image in software, which is something you could do using Core Image filters.
I finally managed to lock my iSight's autoexposure/autowhitebalance from my Cocoa App.
Check out www.paranoid-media.de/blog for more info.
Hmmm,
I tried & googled a lot these days but I couldn't find a good idea.
I think OpenCV + cocoa + iGlasses is the fastest one but still unstable.
If you have good idea, please reply.
Thank you.
The UVC Camera Control for Mac OSX by phoboslab uses basic USB commands and documented USB interfaces to access the webcam controls. The paranoid-media.de/blog listed above links to PhobosLab and provides a few additional tweaks to that method for the iSight. (Those tweaks can now also be found in the comments at phoboslab.

How to capture PCM data from Wave Out

How would it be possible to capture the audio programmatically? I am implementing an application that streams in real time the desktop on the network. The video part is finished. I need to implement the audio part. I need a way to get PCM data from the sound card to feed to my encoder (implemented using Windows Media Format).
I think the answer is related to the openMixer(), waveInOpen() functions in Win32 API, but I am not sure exactly what should I do.
How to open the necessary channel and how to read PCM data from it?
Thanks in advance.
The new Windows Vista Core Audio APIs have support for this explicitly (called Loopback Recording), so if you can live with a Vista only application this is the way to go.
See the Loopback Recording article on MSDN for instructions on how to do this.
I don't think there is a direct way to do this using the OS - it's a feature that may (or may not) be present on the sound card. Some sound cards have a loopback interface - Creative calls it "What U Hear". You simply select this as the input rather than the microphone, and record from it using the normal waveInOpen() that you already know about.
If the sound card doesn't have this feature then I think you're out of luck other than by doing something crazy like making your own driver. Or you could convince your users to run a cable from the speaker output to the line input :)

Resources