opencv处理透明图片
来源:互联网 发布:数控西门子802d编程 编辑:程序博客网 时间:2024/05/20 18:01
opencv处理透明图片
本文由 @lonelyrains出品,转载请注明出处。
文章链接: http://blog.csdn.net/lonelyrains/article/details/50389034
opencv处理透明图片,主要是考虑图片的叠加。
//主函数操作...Mat dest,srcAlpha;// imread后一个参数为-1表示读取带有alpha通道的图片srcAlpha = imread("C:\\Users\\Administrator\\Desktop\\1.png",-1);dest= imread("C:\\Users\\Administrator\\Desktop\\1.png");// 表示从dest的第(50,100)设置对srcAlpha的叠加mapToMat(srcAlpha, dest, 50, 100);...void mapToMat(const cv::Mat &srcAlpha, cv::Mat &dest, int x, int y){ int nc = 3; int alpha = 0; for (int j = 0; j < srcAlpha.rows; j++) { for (int i = 0; i < srcAlpha.cols*3; i += 3) { // 目的图片为三通道,所以是三通道的遍历、四通道的源图 // i/3*4表示第i/3个像素的位置 // i/3*4 + 3表示本像素的alpha通道的值 alpha = srcAlpha.ptr<uchar>(j)[i / 3*4 + 3]; //alpha = 255-alpha; if(alpha != 0) //4通道图像的alpha判断 { for (int k = 0; k < 3; k++) { // if (src1.ptr<uchar>(j)[i / nc*nc + k] != 0) if( (j+y < dest.rows) && (j+y>=0) && ((i+x*3) / 3*3 + k < dest.cols*3) && ((i+x*3) / 3*3 + k >= 0) && (i/nc*4 + k < srcAlpha.cols*4) && (i/nc*4 + k >=0) ) { dest.ptr<uchar>(j+y)[(i+x*nc) / nc*nc + k] = srcAlpha.ptr<uchar>(j)[(i) / nc*4 + k]; } } } } }}
处理前
处理后
本代码段所在的完整工程见另一篇博客 大家一起过圣诞
0 0
- opencv处理透明图片
- 【OpenCV】opencv处理透明图片
- 图片透明效果处理
- 图片透明效果处理
- JAVA图片透明处理
- 图片透明处理
- VC++图片透明处理
- 图片背景透明处理
- php处理透明png图片
- mobile图片的透明处理
- wince 图片背景透明处理
- 透明图片的处理问题
- php处理透明png图片
- 基于openCV的png读取透明图片
- opencv图片处理
- Opencv-图片简单处理
- Android opencv 图片处理
- opencv图片处理基础
- hdu 5583 Kingdom of Black and White
- 面试总结8--计算机网络相关问题Part2
- 腾讯分析系统架构解析
- 基本套接字编程(6) -- 线程篇
- C++中实现从std::string类型到bool型的转换
- opencv处理透明图片
- android倒计时
- HDU 2138:How many prime numbers 【水】
- 欢迎使用CSDN-markdown编辑器
- UGUI - RectTransform
- hdu 5573Binary Tree
- Python 网页爬虫、 文本处理、 科学计算 、机器学习、数据挖掘 兵器谱
- silicon lab ember zigbee学习杂谈 --------- 发送zcl command
- springboot构建solr查询实例