如何做出半透明和闪光效果
一开始看到这样的效果的时候,我感觉非常酷,等到搞明白原理之后,才发现原来很酷的效果可以通过很简单的代码实现,这就更酷了。
首先,需要获得读取一些图片,最好是自然的图片,带点后现代风格的那种。
像这张,带有一种工厂颓废风格的图片,就很是适合。
然后需要在图像中创建一个矩形。
如果是直接创建的话,那么就应该是这样的效果:
Rect rect( 0, 0, 200, 400);
rectangle(src,rect,Scalar( 0, 0, 0));
Rect rect(
0,
0,
200,
400);
rectangle(src,rect,Scalar( 0, 0, 0), - 1);
rectangle(src,rect,Scalar( 0, 0, 0), - 1);
写出这样则是填充的效果,写出这样还是真难看
但是写成这样,就可以得到半透明的效果。关键是融合了前景和背景的颜色。
Rect rect(
0,
0,
200,
400);
Mat roi = src(rect);
roi += CV_RGB( 90, 90, 90);
Mat roi = src(rect);
roi += CV_RGB( 90, 90, 90);
而闪光效果,则多用于在视频当中。当有需要强调的图片出现的时候,则将全部图片或者某一区域变成半透明或者全白,在下一帧中恢复。则达到这样的效果。
记住
roi = src(rect);
roi += cv_rgb(90,90,90);
就是半透明,非常简单。