Here is an example code to generate transparent shape on image. Need to pay attention can not use cv::Mat mask(mat) to create the mask image, because mask will be just a shallow copy of mat.

int GenerateTransparentMask()
{
Mat mat = imread("test.jpg");
if (mat.empty())
return -; Size size = mat.size();
cv::Mat mask ( size, mat.type() );
mat.copyTo(mask); //cv::Mat mask(mat); //Can not work, becuase mask will be just a copy of mat, if draw on mask, means draw on mat too Rect rect(, , , );
rectangle(mask, rect, Scalar(, , ), CV_FILLED, CV_AA, ); double alpha = 0.3;
double beta = 1.0 - alpha;
cv::addWeighted(mask, alpha, mat, beta, 0.0, mat); cvNamedWindow("Result");
imshow("Result", mat); cvWaitKey(); //wait for a key press
return ;
}

The result will as below:

If you need to generate complicated mask on an image, need to use a little different method. Below is the example code.

int GenerateTransparentMask()
{
const Mat mat = imread("DetectingContours.jpg");
if (mat.empty())
return -; imshow("origianl", mat); Size size = mat.size();
cv::Mat copy ( size, mat.type() );
mat.copyTo ( copy ); //cv::Mat mask(mat); //Can not work, becuase mask will be just a copy of mat, draw on mask, means draw on mat too cv::Mat mask(size, CV_8U);  //mask must be CV_8U
mask.setTo(Scalar());
Rect rect(, , , );
rectangle(mask, rect, Scalar(, , ), CV_FILLED, CV_AA, );
rectangle(mask, Rect(, , , ), Scalar(, , ), CV_FILLED);
circle(mask, Point(, ), , Scalar(), CV_FILLED); copy.setTo(Scalar(, , ), mask);
//imshow("copy", copy); double alpha = 0.5;
double beta = 1.0 - alpha; cv::Mat result(size, mat.type());
cv::addWeighted(copy, alpha, mat, beta, 0.0, result); cvNamedWindow("Result");
imshow("Result", result); cvWaitKey(); //wait for a key press
return ;
}

Generate transparent shape on image的更多相关文章

  1. [LintCode] Shape Factory 形状工厂

    Factory is a design pattern in common usage. Implement a ShapeFactory that can generate correct shap ...

  2. [转]android使用shape stroke描边只保留底部

    在项目中遇到这种情况:由于一些原因,自己需要用LinearLayout的垂直布局做出ListView的那种效果,但是ListView是自带了分割线的,而且顶部底部都是没有分割线的,每个item中间都是 ...

  3. Android Shape Divider

    安卓框架提供了一种LinearLayout 内部布局元素分割线的实现,建立一个指定长宽的矩形Shape: <?xml version="1.0" encoding=" ...

  4. Shape Factory

    Factory is a design pattern in common usage. Implement a ShapeFactory that can generate correct shap ...

  5. C# PPT Operator

    来自:http://blog.csdn.net/lxzh12345/article/details/47047491 最近在写一个工具,设计到将界面内容到处到PPT中,且导出的内容能够编辑.网上搜了很 ...

  6. H5版俄罗斯方块(3)---游戏的AI算法

    前言: 算是"long long ago"的事了, 某著名互联网公司在我校举行了一次"lengend code"的比赛, 其中有一题就是"智能俄罗斯方 ...

  7. 3.0之后在LinearLayout里增加分割线

    android:divider="@drawable/shape"<!--分割线图片--> android:showDividers="middle|begi ...

  8. WebView线性进度条

    参考:http://www.cnblogs.com/hubli/p/4835549.html APP会跳转网页时候,请参考:http://blog.csdn.net/raphael55/article ...

  9. 改变seekbar的游标图片大小

    url: http://stackoverflow.com/questions/9699951/changing-size-of-seekbar-thumb The most flexible way ...

随机推荐

  1. Ubuntu 16.04 风扇特别响解决办法

    主要原因是显卡驱动的问题,选择驱动专有,tested.

  2. 重置mysql数据库密码

    # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking & # my ...

  3. SQL中PIVOT 行列转换

    来源:http://www.studyofnet.com/news/295.html PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列 ...

  4. [经验交流] docker in docker 的变通实现方法

    最近在做CI持续集成环境的容器化,其中一个工作是:在容器中构建容器镜像. 对于这个需求,网上有一些 Docker in Docker 的方法,具体需要修改宿主机的配置.这种方式在单机环境下.对安全要求 ...

  5. JVM--标记-清除算法Mark-Sweep

    前言 垃圾自动回收机制的出现使编程更加的简单,使得我们不需要再去考虑内存分配和释放的问题,而是更加的专注在我们产品功能的实现上.但是我们还是需要花时间去了解下垃圾收集机制是怎么工作的,以便后面能够更好 ...

  6. MFC ADO连接Sql Server数据库报无效指针的问题

    相关症状:  Win7sp1上编译的ADO程序无法在低版本系统上运行,创建ADO时提示错误:0x80004002 解决办法如下:  1.下载:  http://download.microsoft.c ...

  7. 设置树莓派3 B+的静态IP

    修改/etc/dhcpcd.conf 文件 sudo vim /etc/dhcpcd.conf interface eth0 static ip_address= static routers=192 ...

  8. jvm是如何管理内存的

    1.JVM是如何管理内存的 Java中,内存管理是JVM自动进行的,无需人为干涉. 了解Java内存模型看这里:java内存模型是什么样的 了解jvm实例结构看这里:jvm实例的结构是什么样的 创建对 ...

  9. string相关总结

    一 <string> 1 string类常见成员函数 (1)属性相关 s.empty()   s为空时返回true,否则返回false s.size()      返回s中字符的个数,不包 ...

  10. Oauth2.0

    注:Access token 为第三方平台的token,在用户授权时使用Refresh Token为用户的token get/post参数时,一般采用字典排序