I couldn't find a way to load and process the Nikon 12-bit RAW files from the D3100 directly with MATLAB. So, I found a way from MATLAB to kick off the NX-D software and perform the conversion.
First, to run the program, I had to use a .bat file. This could be created in MATLAB, then executed. The main idea is to have the Capture NX-D program open with the required file highlighted. Also, you need to have run NX-D before to set all the settings (output directory, 16-bit TIFF, etc.).
cd \
cd "Program Files"
cd Nikon
cd "Capture NX-D"
cd Module
start "" "CaptureNX-D.exe" C:\path_to_file\DSC_5097.NEF"
exit

Once NX-D is running, then you can use the Java robot to send the keys to start. Here is the MATLAB code to run the .bat file, and then kick off the conversion.
%% Code % Raise the Nikon Capture NX-D program with a specified filename, and kick % off a capture close all clear % Raise Nikon Capture NX-D program with the correct file highlighted (see % test.bat) status = system('test.bat &'); % Create active x server h = actxserver('WScript.Shell'); % Get the java robot import java.awt.Robot import java.awt.event.* my_robot = Robot; % Bring the window to the foreground temp = h.AppActivate('Capture NX-D'); % Check to see that the window came up if temp == 1 % Kick off the conversion, i.e., CTRL-E pause(0.1); my_robot.keyPress(17); pause(0.1); my_robot.keyPress(69); pause(0.1); my_robot.keyRelease(69); pause(0.1); my_robot.keyRelease(17); % Let window raise pause(0.5); % Press enter (assumes TIFF 16 bit already selected) my_robot.keyPress(10); pause(0.1); my_robot.keyRelease(10); end
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.