![]() |
Thermal Camera SDK 10.1.1
SDK for Optris Thermal Cameras
|
My SDK application can not access the data stream from the device.
Check, if you as a user are part of the video group:
If this is not the case, add yourself to this group:
For some devices passing the nodrop option to the UVC kernel driver may prove helpful. You can temporarily activate this option with the following command:
Alternatively, the parameter can be modified via the sysfs (this is also not permanent):
If you find this option helpful, you can activate it permanently by creating the following file:
When I start my SDK application I get the following error message although my device is plugged into the USB port:
It does not even show up when I use the tool otc_find_devices.
You can run into this situation when you are using a Xi 80, a Xi 410 or a Xi 1M via USB on Linux. It happens when a SDK application is shutdown abruptly, for example, with Ctrl + C or by killing it in a task manager. This prevents the SDK from properly releasing its resources. As a result, the Linux kernel thinks that the device is still in use and subsequently refuses any attempt to connect to it.
The only way to remedy this issue is to plug the device out and in again. You can avoid this problem by ensuring that the SDK can shutdown gracefully. This can be achieved by either calling IRImager::disconnect() or by making sure that yor IRImager object is destroyed before the application exits.
The SDK example applications do not start.
In such a case try installing the C++ redistributable v14 for the amd64/X64 architecture from Microsoft. If you install Visual Studio 2022 with the Workload Desktop development with C++ (s. Start Developing - C++), the required C++ redistributable will be installed automatically.
The false color image does not seem to use the ColoringPalette that I specified.
Check, whether you specified the correct ColorFormat when instantiating the ImageBuilder. Refer to the API documentation of the ColorFormat enum for more details.
The false color image I generated exhibits tearing and lines.
Check, whether you specified the correct WidthAlignment when creating the ImageBuilder. Refer to the API documentation of the WidthAlignment enum for more details.
When I connect my thermal camera to my computer via USB it appeared as a video capture device. When I tried to open it with a program like VLC media player I only got green noise like this:
Nothing is wrong. The player just visualizes the raw data. Its needs processing by the SDK in order to become usable.
Wait a minute I did not even get that far. The device shows up as a capture device but I can not open it.
This happens with Xi 80, Xi410 and Xi 1Ms on Linux. The reason for this is the USB transfer mode used by these devices. For more detailed information please refer to the Streaming section in the Device Communication chapter.
I am still puzzled: The frames in the VLC player are larger than the ones returned by the SDK. Where did they disappear?
These additional rows or columns contain the metadata of the frame. They are decoded by the SDK and provided separately in form of a FrameMetadata object in thermal frame callbacks.
I've connected my Xi camera, started the provided Simple View example and everything works fine. However, there is a noticeable difference of the temperature values to the values displayed in the PixConnect.
Most Xi cameras (Xi80, Xi410, Xi1M, ...) support an autonomous mode where the camera itself calculates the temperature, even if its not connected to a PC. This is called "Direct temperature mode". Currently (Version 10.1.0) this mode is not supported or recognized by the SDK. As a result, the calculations to convert the energy values into temperatures will be done twice which leads to faulty results.
To disable this mode or check its state, start the PixConnect on Windows and open the configuration panel. Switch to the "External Communication" tab and make sure that the checkbox at "Direct temperature mode" is NOT checked.
The IRImagerClient callbacks tell me that I lost or timed out my camera connection so I decided to use the disconnect() method of the IRImager to close the connection but then my program got stuck.
This issue can arise when you started the image processing with runAsync(). In this case the SDK creates a dedicated thread to run the processing pipeline. All callbacks are triggered from this thread. When calling disconnect() the SDK will try to join and delete this thread that you are currently still using to execute this disconnect. This will result in a dead lock.
To circumvent this issue, please use a synchronized flag to signal to another thread that it should call the disconnect() method. Take a peak at the C++ or the C# Simple View examples for an inspiration on how to accomplish this.