我需要像透明色的白色

时间:2016-01-05 22:01:28

标签: c++ opencv

我有问题。 我有这个程序,使黑色透明。

src=imread("0.jpg", 1);
cvtColor(src,tmp,CV_BGR2GRAY);  
threshold(tmp,alpha,100,255,THRESH_BINARY);         
Mat rgb[3];     
split(src,rgb);

Mat rgba[4]={rgb[0],rgb[1],rgb[2],alpha};   
merge(rgba,4,dst);          
imwrite("1.png",dst);

他的输入和输出是:

  1. http://i.imgur.com/FyPbEbb.jpg - 输入
  2. Transparent background with white places - 输出
  3. 但我不希望黑色透明,我希望白色是透明的。 但我无法弄明白。 请问你能帮帮我吗?谢谢。

1 个答案:

答案 0 :(得分:2)

src=imread("0.jpg", 1);
cvtColor(src,tmp,CV_BGR2GRAY);  
threshold(tmp,alpha,100,255,THRESH_BINARY_INV);        
Mat rgb[3];     
split(src,rgb);

Mat rgba[4]={rgb[0],rgb[1],rgb[2],alpha};   
merge(rgba,4,dst);          
imwrite("1.png",dst);

如果我们选择THRESH_BINARY_INV而不是THRESH_BINARY。 输出为:Black background with some transparent places。 这是整个问题,现在已经解决了。