LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
OpenCv添加透明通道
t_chunbo 2018-12-04

参考地址:https://blog.csdn.net/guduruyu/article/details/80184

以下为我的代码 仅仅是为了记录


cv::Mathecheng::createAlpha(cv::Mat& src)

{

cv::Mat alpha = cv::Mat::zeros(src.rows, src.cols, CV_8UC1);

cv::Mat gray = cv::Mat::zeros(src.rows, src.cols, CV_8UC1);


cv::cvtColor(src, gray, cv::COLOR_RGB2GRAY);


for (int i = 0; i < src.rows; i++)

{

for (int j = 0; j < src.cols; j++)

{

uchar d = gray.at<uchar>(i, j);

alpha.at<uchar>(i, j) = 255;

//alpha.at<uchar>(i, j) = 255 - d;

}

}


return alpha;

}


inthecheng::addAlpha(cv::Mat& src, cv::Mat& dst, cv::Mat& alpha)

{

if (src.channels() == 4)

{

return -1;

}

elseif (src.channels() == 1)

{

cv::cvtColor(src, src, cv::COLOR_GRAY2RGB);

}


dst = cv::Mat(src.rows, src.cols, CV_8UC4);


std::vector<cv::Mat> srcChannels;

std::vector<cv::Mat> dstChannels;

//分离通道

cv::split(src, srcChannels);


dstChannels.push_back(srcChannels[0]);

dstChannels.push_back(srcChannels[1]);

dstChannels.push_back(srcChannels[2]);

//添加透明度通道

dstChannels.push_back(alpha);

//合并通道

cv::merge(dstChannels, dst);

return 0;

}


推荐文章
评论(0)
联系我们|招贤纳士|移动客户端|风格模板|官方博客|侵权投诉 Reporting Infringements|未成年人有害信息举报 0571-89852053|涉企举报专区
网易公司版权所有 ©1997-2024  浙公网安备 33010802010186号 浙ICP备16011220号-11 增值电信业务经营许可证:浙B2-20160599
网络文化经营许可证: 浙网文[2022]1208-054号 自营经营者信息 工业和信息化部备案管理系统网站 12318全国文化市场举报网站
网信算备330108093980202220015号 网信算备330108093980204230011号
分享到
转载我的主页