Ques:有時候我們需要在電子文檔上實作手寫的簽名,但是又沒有相關的文檔,我們應該如何解決這個問題呢?
先看看實驗結果
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90zZkNnVzQmb1cVWxQmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1IzM0EDM0ITMyAzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
程式:
%% 選取圖像
[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');