Convert image to a c++ header file

26 views (last 30 days)
Thilina Prasanga Doremure Gamage
Answered: Saipraveen on 30 Sep 2019
Hi all,
I'm a newbie to Matlab programming. Can you guys please tell me the way of converting an image file to a C++ header file in matlab. I found a script which i suspect might do the job but ca't get it to work.. :/
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
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.

Sign in to comment.

Answers (2)

Jan
Jan on 14 Mar 2019
Edited: Jan on 14 Mar 2019
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
  1 Comment
Thilina Prasanga Doremure Gamage
Hi Jan,
Thank u so much for the quick response :) I'm really new to this.. first i tried to put the image in a varible called img and run the script after. i have no idea how this script call the image. can u please explain? sorry i know this is stupid but im trying to learn image processing by following a tutorial..

Sign in to comment.


Saipraveen
Saipraveen on 30 Sep 2019
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.

Categories

Find more on Convert Image Type in Help Center and File Exchange

Products


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by