Convert image to a c++ header file
Show older comments
Can someone tell me why can't I get this to work?! It should be working!
The script is as below;
function export_Img_2_Header( img, filename )
%EXPORT_IMG_2_HEADER Summary of this function goes here
% Detailed explanation goes here
sizeArray = numel(img);
fileID = fopen(filename,'w');
fprintf(fileID,'//Image on header\n');
fprintf(fileID,'unsigned char img[%d] = {',sizeArray);
img_sq = reshape(img,[1 sizeArray]);
for idx = 1:numel(img_sq)
val = img_sq(idx);
if idx ~= sizeArray
fprintf(fileID,'%d ,',val);
else
fprintf(fileID,'%d',val);
end
end
fprintf(fileID,'};\n');
fclose(fileID);
end
1 Comment
Jan
on 14 Mar 2019
Please mention, what "can't get it to work" means. The code looks fine, so I guess you made a mistake at calling it.
Answers (2)
Saipraveen
on 30 Sep 2019
1 vote
In this file exchange - https://www.mathworks.com/matlabcentral/fileexchange/72535-image-to-c-c-array-converter, I have written a script to generate a C/C++ array which can be saved as a header file for use with various embedded displays.
Hope that helps.
Maybe this helps - smarter without a loop:
function export_Img_2_Header( img, filename )
% EXPORT_IMG_2_HEADER Create C++ header file containing image data
[fileID, msg] = fopen(filename, 'W');
if fileID == -1
error('Cannot open file for writing: %s, %s', filename, msg);
end
% Maybe:
img = im2uint8(img);
n = numel(img);
fprintf(fileID, '// Image on header\nunsigned char img[%d] = {', n);
fprintf(fileID,'%d ,', img(1:n-1));
fprintf(fileID,'%d};\n', img(n));
fclose(fileID);
end
Categories
Find more on Convert Image Type in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!