1. 程式人生 > >圖片透明處理的方法

圖片透明處理的方法

找到 adjust rtl show idt 輸出 cnblogs one 顏色矩陣

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

圖片的透明性,由其屬性‘Alpha’ 決定,所以改變圖像的‘Alpha‘值則改變透明度
Alpha為與圖像分辨率相同大小的矩陣,0為透明,1為不透明。保存圖片時,如要保存為
透明圖片,須保存為png格式,保存代碼為:imwrite(I,‘圖像名.png‘,‘Alpha‘,alpha)

舉例:一張字圖片,背景為白色,字為黑色,現在將其處理後,輸出為字為紅色,背景為透明的圖片。
MATLAB實現的代碼如下:
%字變為紅色,背景變為白色,保存背景為透明的圖片


I=imread(fname1);
mask=rgb2gray(I);
mask1=im2bw(mask);
mask1=~mask1;
y = sum(mask1,2);
indices = find(y>0);
y_up = indices(1);
y_down = indices(end);
x = sum(mask1,1);
indices1 = find(x>0);
x_up = indices1(1);
x_down = indices1(end);
BW=I(y_up:y_down,x_up:x_down);
figure;imshow(BW);
imwrite(BW, ‘F:\boss\HeartLungSegment_RadiographicIndexComputation\dtouming.png ‘,‘png‘);
[h,w]=size(BW);

ima=imadjust(mask); %調節灰度圖像的亮度或彩色圖像的顏色矩陣
bw=im2bw(ima); %二值化默認值是0.5
level=graythresh(mask); %使用最大類間方差法找到圖片的一個合適的閾值
bw2=im2bw(ima,level);
bw4 =bwareaopen(bw3, 20);

bw5=~bw4;
R=I(y_up:y_down,x_up:x_down,1);%矩陣的拆分,所有行列的第1個值
G=I(y_up:y_down,x_up:x_down,2);
B=I(y_up:y_down,x_up:x_down,3);


rgb=cat(3,R,G,B); %構建矩陣,3為矩陣的維數
figure,imshow(rgb)
%透明度
siz=size(BW);
alpha=ones(siz(1),siz(2));
alpha(G==255)=0; %取背景部分0 0為透明
imwrite(rgb,‘透明.png‘,‘Alpha‘,alpha);

結果如下:

技術分享

原圖

技術分享

處理後的圖像

圖片透明處理的方法