天天看點

MATLAB 實作電子版的手寫簽名

Ques:有時候我們需要在電子文檔上實作手寫的簽名,但是又沒有相關的文檔,我們應該如何解決這個問題呢?

先看看實驗結果

MATLAB 實作電子版的手寫簽名
MATLAB 實作電子版的手寫簽名
MATLAB 實作電子版的手寫簽名

程式:

%% 選取圖像
 [filename, pathname] = uigetfile({'*.jpg'; '*.bmp'; '*.gif'}, '選擇圖檔');
 %沒有圖像
 if filename == 0
     return;
 end
 
 %% 讀取圖像
I= imread([pathname, filename]);
I= imresize(I,0.5);
figure(1);
imshow(I)                                                               %顯示原圖像

%% 手動裁剪圖像
figure(1),imshow(I,[]);title('點住滑鼠左鍵可以拖動選擇的區域,并且松開後輕按兩下确認區域');
set(gcf,'outerposition',get(0,'screensize'));%使該圖顯示最大化,便于取點
b = imcrop(); % 滑鼠可以拖動選擇的區域,并且輕按兩下确認區域
close;
% set(gcf,'outerposition',get(0,'screensize'));%使該圖顯示最大化
imshow(b);

 %% 圖像處理
I1 =rgb2gray(b);                                                        %轉為灰階圖像
imshow(I1)
I11=imadjust(I1);                                                       %增強圖像對比度
imshow(I11)

I11B=im2bw(I11);  %圖像二值化
figure(2);
imshow(I11B)

%% 字型加粗
SE1=strel('disk',4);                                                     %生成圓盤
I3= imerode(I11B,SE1);                                                    %利用圓盤對圖像進行膨脹   
figure(3);
imshow(I3); 

%% 字型變細
SE2=strel('disk',2);                                                     %生成圓盤
I4= imdilate(I11B,SE2);                                                  %利用圓盤對圖像進行腐蝕   
figure(4);
imshow(I4); 

%% 儲存圖檔

imwrite(I11B, '手寫簽名-黑白.jpg');
imwrite(I3, '手寫簽名-粗.jpg');
imwrite(I4, '手寫簽名-細.jpg');

           

繼續閱讀