当前位置:首页 > Web图像检索系统原型设计和实现
end
以上的这段代码中,有一段代码可以将右侧列表框内的图片文件读取出来并以单独的窗口显示被选图片和颜色直方图,如图4-6所示。
图 4-6 被选图片及颜色直方图
4.5.2 导入数据库
该按钮实现的功能相对简单。就是在input to database下,可以将列表框中的所有文件的文件名按顺序导入到本地文件夹路径下的一个名为database的TXT文档中。该按钮如图4-7所示,该database文档如图4-8所示。
图4-7 导入数据库按钮
18
图4-8 database.txt文档
该按钮的程序代码段如下:
function inputButton_Callback(hObject, eventdata, handles) % hObject handle to transform1button (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.inputButton, 'Enable', 'Off'); % Open database txt file... for reading... fid = fopen('database.txt'); exists = 0; while 1
tline = fgetl(fid);
if ~ischar(tline), break, end % Meaning: End of File... if (strcmp(tline, handles.filename)) exists = 1; break; end end fclose(fid); if ~exists
19
fid = fopen('database.txt', 'a');
file_list = get(handles.listbox1,'String'); M=size( file_list); for i=1:M
filename = file_list{i}; fprintf(fid,'%s\\r',filename); end; fclose(fid); end
guidata(hObject, handles)
msgbox('Database updated with file name...', 'Success...'); set(handles.input, 'Checked', 'Off'); set(handles.search, 'Checked', 'Off'); set(handles.input, 'Enable', 'On'); set(handles.search, 'Enable', 'On');
以上代码还实现了一个功能,就是当有新的文件添加到本地文件夹下时,会出现一个窗口提示“Database updated with file name...”更新database文档,更新完成后会显示“Success...”。 4.5.3 查询
该按钮实现的功能就是利用同组另外两个同学提供的基于纹理特征和颜色特征的算法,查找出本地文件夹下与目标图标最相似的十幅图片,并将之降序排列。该按钮如图4-9所示。
图4-9 查询按钮
20
该按钮的程序代码段如下所示:
function searchButton_Callback(hObject, eventdata, handles) % hObject handle to transform2button (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.searchButton, 'Enable', 'Off'); % Colour search...
% Open database txt file... for reading... fid = fopen('database.txt');
resultValues = []; % Results matrix... resultNames = {};
i = 1; % Indices... j = 1;
h=waitbar(0,'Please Wait ...'); while 1
imagename = fgetl(fid);
if ~ischar(imagename), break, end % Meaning: End of File... % [X, RGBmap] = imread(imagename); X = imread(imagename)
% HSVmap = rgb2hsv(RGBmap);
% D = quadratic(handles.queryx, handles.querymap, X, HSVmap); D = quadratic(handles.queryx,X); resultValues(i) = D;
resultNames(j) = {imagename}; i = i + 1; j = j + 1; end fclose(fid);
% Sorting colour results...
[sortedValues, index] = sort(resultValues); % Sorted results... the vector index % is used to find the
21
共分享92篇相关文档