在OpenCV中为我的Detected对象设置动画

时间:2011-10-25 03:02:05

标签: c++ visual-c++ opencv kinect

我想知道如何在OpenCV的视频帧中创建像发光球或发光线这样的效果。关于我可以从哪里开始或者我可以使用什么的提示,所以我可以在输出中创建简单的动画?

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用原始OpenCV像素操作很容易实现这些效果。假设您将球标识为单独的蒙版图像mask中的白色区域。使用GaussianBlur模糊此蒙版,然后将结果与源图像img合并。对于发光效果,您可能需要Photoshop的屏幕混合模式,这样只会使图像变亮:

Result Color = 255 - [((255 - Top Color)*(255 - Bottom Color))/255]

“发光”效果的真正关键是使用底层图层中的像素作为屏幕图层。这转换为OpenCV:

cv::Mat mask, img;
...
mask = mask * img; //fill the mask region with pixels from the original image
cv::GaussianBlur(mask, mask, cv::Size(0,0), 4); //blur the mask, 4 pixels radius
mask = mask * 0.50; //a 50% opacity glow
img = 255 - ((255 - mask).mul(255 - img) / 255); //mul for per-element multiply

我没有测试这段代码,所以这里可能有问题。 Color Dodge也是一种有用的发光混合模式。 更多信息:How does photoshop blend two images together?