项目场景:
近日,在需要用到背景与背景融合的图片时,有发现一个问题
问题描述:
无法进行图片融合
@Override
public void run() {
bytes = mmInStream.read(buffer);
mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();
}
原因分析:
因为我们都知道,在计算机中,图片显示的形式,灰度图是二维矩阵,彩色图是三维矩阵。我们看到的白色部分就是灰度值接近255的部分(如果灰度量程为256的话),而黑色部分则接近0。在图片叠加时,难免会遇到以上问题。不过我这里用的python分层,想要消除掉白色部分。
解决方案:
clc;clear all;
a= imread('音乐符号.jpg');
[row,col]=size(a);
A=zeros(row,col,3);
A=uint8(A);
A(1:row,1:col)=a(1:row,1:col);
alpha=zeros(row,col);%0透明---1不透明
for i=1:row
for j=1:col
if A(i,j)<128
A(i,j)=0;
alpha(i,j)=1;
else
A(i,j)=255;
alpha(i,j)=0;
end
end
end
A(1:row,1:col,2)=A(1:row,1:col,1);
A(1:row,1:col,3)=A(1:row,1:col,1);
figure(1);
subplot(1,2,1);imshow(A);
subplot(1,2,2);imshow(a);
imwrite(A,'A.png','Alpha',alpha)
认真看一下很容易看懂,最后实现的效果图:
当然,如果想要改变颜色的话,只需要调整矩阵的值,这里就不多说了。imwrite(A,'A.png','Alpha',alpha)
最后在生成文件时,添加alpha通道即可。