Matlab-自动生成结果

Matlab-自动生成结果,matlab,Matlab,我创建了一个程序,该程序接收硬币的图像,然后利用Matlab的最大能力绘制出硬币的正面(下面的示例)。有了这个程序,我想尝试一下图像处理,就像谷歌图像允许用户搜索图像并返回它认为相似的结果一样 | 为此,我需要大量的数据来完成这项工作,在我的应用程序上手动使用滑块并为每个图像生成50-100个结果将花费太长时间。所以我决定创建一个新的按钮,它生成100个结果,每个结果提供不同的绘制样本 function slider2_Callback(hObject, eventdata, handles)

我创建了一个程序,该程序接收硬币的图像,然后利用Matlab的最大能力绘制出硬币的正面(下面的示例)。有了这个程序,我想尝试一下图像处理,就像谷歌图像允许用户搜索图像并返回它认为相似的结果一样

|

为此,我需要大量的数据来完成这项工作,在我的应用程序上手动使用滑块并为每个图像生成50-100个结果将花费太长时间。所以我决定创建一个新的按钮,它生成100个结果,每个结果提供不同的绘制样本

function slider2_Callback(hObject, eventdata, handles)
% hObject    handle to slider2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
global coins_gray;
global num;
val=0.5*get(hObject,'Value')-0.5; %Adjusts the intensity of the slider's brightness setting
imbrightness = coins_gray+val;
axes(handles.axes3);
imshow(imbrightness);
title('Altered Coin Image', 'fontweight', 'bold');

[~, threshold] = edge(imbrightness, 'Canny');
fudgeFactor = num;
img_edge = edge(imbrightness, 'Canny', threshold * fudgeFactor);
axes(handles.axes4) 
imshow(img_edge);
title('User Drawn Image', 'fontweight', 'bold');
上面说明了滑块是如何工作的,但我不确定如何调整它,使其像我前面提到的那样自动工作

function gatherbutton_Callback(hObject, eventdata, handles)
% hObject    handle to gatherbutton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

%Prompts the user to enter a title for the image gathering process
prompt = ('Please Enter The Image Name (Do Not Include File Extension): ');
userInput = input(prompt, 's');

counter = 0
while counter < 100:
    processFolder = sprintf('M:/Project/MatLab/Coin Image Processing/Image Processing/%s_%s.jpg', userInput, counter);

    referenceImagePrep = getframe(handles.axes3);
    drawnImagePrep = getframe(handles.axes4);
    counter = counter + 1;
end
function gatherbutton\u回调(hObject、eventdata、handles)
%hObject句柄到gatherbutton(参见GCBO)
%eventdata保留-将在未来版本的MATLAB中定义
%带有句柄和用户数据的句柄结构(请参见GUI数据)
%提示用户输入图像采集过程的标题
prompt=(“请输入图像名称(不包括文件扩展名):”);
用户输入=输入(提示“s”);
计数器=0
当计数器<100时:
processFolder=sprintf('M:/Project/MatLab/Coin Image Processing/Image Processing/%s\u%s.jpg',用户输入,计数器);
referenceImagePrep=getframe(handles.axes3);
drawnImagePrep=getframe(handles.axes4);
计数器=计数器+1;
结束

这就是我目前所拥有的。因此,循环应运行100次,每次运行时,一个新映像将保存到给定目录中,并应继续运行,直到while循环完成。那么我现在如何调整while循环以自动更改参考图像的亮度,然后将该图像存储到给定的文件夹中呢

您的问题有一个相对简单的解决方案。
我不能保证你的代码在应用后会工作得很好

  • 设置
    slider2
    中的值,同时
    gatherbutton\u回调中循环
    
    
  • 设置值后调用
    slider2\u Callback
    (模拟用户滑动)
  • 添加用于刷新GUI的
    drawnow
    命令 以下是修改后的
    while
    循环:

    while counter < 100:
        %1. Set slider value.
        set(handles.slider2, 'Value', counter/100);
    
        %2. Call `slider2_Callback` (simulate user sliding).
        slider2_Callback(handles.slider2, eventdata, handles);
    
        %3. Call drawnow for refreshing the GUI.
        drawnow
    
        processFolder = sprintf('M:/Project/MatLab/Coin Image Processing/Image Processing/%s_%s.jpg', userInput, counter);
    
        referenceImagePrep = getframe(handles.axes3);
        drawnImagePrep = getframe(handles.axes4);
    
        %Save image to file...
    
        counter = counter + 1;
    end
    
    计数器<100时:
    %1.设置滑块值。
    设置(handles.slider2,'值',计数器/100);
    %2.调用'slider2\u Callback'(模拟用户滑动)。
    slider2\u回调(handles.slider2、eventdata、handles);
    %3.调用drawnow刷新GUI。
    刷新屏幕
    processFolder=sprintf('M:/Project/MatLab/Coin Image Processing/Image Processing/%s\u%s.jpg',用户输入,计数器);
    referenceImagePrep=getframe(handles.axes3);
    drawnImagePrep=getframe(handles.axes4);
    %将图像保存到文件。。。
    计数器=计数器+1;
    结束
    

    几项建议:

    • 用于
      循环,而不是
      循环(在您的情况下更优雅):
      用于计数器=0:99
    • getimage
      替换为
      getframe
      (使用图像比使用帧更好)
    • tif
      png
      格式保存图像(
      jpg
      格式创建有损图像压缩瑕疵)
    • 使用
      imwrite
      功能保存图像