Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

NI-IMAQdx ICube NS4133BU uses wrong exposure values

Solved!
Go to solution

Hi,

 

I'm using a DirectShow supported CMOS-USB-Cam (ICube NS41133BU, Net-GmbH). This camera is shown correctly in the Measurement&Automation Explorer under NI-IMAQdx Devices. I can also access and change several parameters of the cam. 

 

BUT: when I want to change the exposure time of the camera (which is a crucial parameter for my application) I can only enter some numbers which are always two times the number before (e.g. 0.1, 0.2, 0.4, 0.8, 1.6) --> I can not chose the exposure values I want because when I implement this in my Vi and enter a certain value for the exposure time, the camera will use another value (the next smaller value which is available). However, this seems not to be a problem of the camera driver or DirectShow support since this is working perfectly with other software like "AMCAP ".

http://www.noeld.com/programs.asp?cat=video#StillCapLib 

 

Any solutions?

 

Thanks in advance!

Philipp

0 Kudos
Message 1 of 6
(4,638 Views)
This is a limitation of the defined programmatic interface DirectShow has for exposure time ( http://msdn.microsoft.com/en-us/library/windows/desktop/ff564401(v=vs.85).aspx ). The reason you may be able to access the settings differently in another application is that they are displaying native control panels from the camera driver. Unfortunately there is no way for IMAQdx to access such functionality programmatically since it is only in GUI form.

Eric
0 Kudos
Message 2 of 6
(4,633 Views)

Thank you Eric!

 

This really seems to be the explanaition.

Ok, now I know what is the problem, so how do I solve this?

Another camera will change nothing.

I also tried to use the the SDK-DLL-files in Labview to access the camera-functions via those DLLs, however, this did not work since i got errors.

 

But there has to be a solution, it has to be possible to use every exposure values within Labview. There are surely other people who need this.

 

Any ideas?

0 Kudos
Message 3 of 6
(4,626 Views)
Hi,

The solution is to not use DirectShow. It was designed for webcameras and other consumer video devices and doesn't have great interfaces for machine vision without vendor-specific extensions.

IMAQ and IMAQdx have very good support for machine vision cameras that support well-defined standards in the machine vision industry, such as CameraLink, IIDC DCAM/FireWire, and GigE Vision. If you go outside of these supported standards you are either stuck with the limitations of layers such as DirectShow or might be able to use a vendor-supported LabVIEW wrapper instead of IMAQdx.

There is also a new standard just released this year that covers USB cameras for machine vision called USB3 Vision. Likely you will see more standards-based USB cameras in the future. IMAQdx will be supporting this new standard very soon as well.

Eric
0 Kudos
Message 4 of 6
(4,617 Views)

Thanks again Eric!

 

I contacted the vendor (net-gmbh), maybe they can support me with a Labview-Vi.

 

Basically it should also be possible to manage the implementation of the driver DLL (I also have *.h and *.cpp files, however I am not familiar with C++) in LabVIew and access the defined functions in the DLL, right?

 

Regards

Philipp

0 Kudos
Message 5 of 6
(4,601 Views)
Solution
Accepted by topic author pliehm

Yes, there are VIs available for exposing the image internals such as pointers to image data that 3rd-party code can use to integrate with their own SDK/driver functions. Depending on how their functions are defined it might be trivial to wrap them as-is in LabVIEW or you may have to compile your own C wrappers.

 

Eric

0 Kudos
Message 6 of 6
(4,595 Views)