c++ - 在 OpenCV 中为我检测到的对象制作动画

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

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

提前致谢!

最佳答案

这些效果可以通过原始的 OpenCV 像素操作轻松实现。假设您在单独的蒙版图像 mask 中将球识别为白色区域。使用 GaussianBlur 模糊此蒙版,然后将结果与源图像 img 组合。对于发光效果,您可能需要像 Photoshop 的 Screen 混合模式这样的东西,它只会使图像变亮:

结果颜色 = 255 - [((255 - 顶部颜色)*(255 - 底部颜色))/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

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

关于c++ - 在 OpenCV 中为我检测到的对象制作动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7884232/

相关文章:

visual-c++ - 为什么以下代码不会覆盖 C++ CLI 中的基类属性?

python - 如何找到图像中包含的图像?

python - AttributeError: 'NoneType'对象没有属性 'copy'

c++ mysql查询字符串用引号和变量解析

windows - 如何将 UAC 盾牌图标添加到标准消息框?

c++ - 如何使内存对齐类的派生类失去对齐

c++ - 将 cv::Mat 转换为 Magick::Image

c++ - 使用新数组创建而不声明大小

c++ - 在 Qt 4.10.2 中创建 .exe 文件

c++ - 逻辑短路是否不适用于 if-constexpr?