基于OpenCV的视频图像组态 (8) :随机线条动画效果
来源:互联网 发布:淘宝暴利行业排行榜 编辑:程序博客网 时间:2024/04/30 08:34
随机线条效果实现
class TCbwAnimationEffect_RandomLine : public TCbwAnimationEffect { // 随机线 virtual bool __fastcall BuildMaskMat(cv::Mat& destMat, cv::Mat& srcMat, TRect displayRect); BYTE * FOccurredLines;public: __fastcall TCbwAnimationEffect_RandomLine();}; __fastcall TCbwAnimationEffect_RandomLine::TCbwAnimationEffect_RandomLine() : TCbwAnimationEffect() { EffectType = cetRandomLine; FOccurredLines = NULL;} bool __fastcall TCbwAnimationEffect_RandomLine::BuildMaskMat(cv::Mat& destMat, cv::Mat& srcMat, TRect displayRect) { bool horzFlag = (MyOptionType.Items[1].CurrentValue == 0); // 方向 TRect wholeRect(0, 0, displayRect.right - displayRect.left, displayRect.bottom - displayRect.top); int totalLineNumber = (horzFlag ? wholeRect.bottom : wholeRect.right); int number = double(FCurrentIndex + 1) / FTotalFramesInOnePeriod * totalLineNumber; if (!FOccurredLines) { FOccurredLines = new BYTE[totalLineNumber]; ZeroMemory(FOccurredLines, totalLineNumber); } int destNumber = number -int(double(FCurrentIndex) / FTotalFramesInOnePeriod * totalLineNumber); BYTE * pDst = destMat.data; vector<int>totalLines; for (int i = 0; i < totalLineNumber; ++i) totalLines.push_back(i); while (destNumber-- > 0 && totalLines.size()) { int n = random(totalLines.size()); while (FOccurredLines[totalLines[n]]) { totalLines.erase(totalLines.begin() + n); n = random(totalLines.size()); } FOccurredLines[totalLines[n]] = 1; totalLines.erase(totalLines.begin() + n); } for (int row = 0; row < destMat.rows; ++row) for (int col = 0; col < destMat.cols; ++col) { bool inFlag = (horzFlag ? FOccurredLines[row] : FOccurredLines[col]); *pDst++ = inFlag ? 255 : 0; } if (FCurrentIndex == FTotalFramesInOnePeriod - 1) { delete FOccurredLines; FOccurredLines = NULL; } return true;}
演示效果
阅读全文
0 0
- 基于OpenCV的视频图像组态 (8) :随机线条动画效果
- 基于OpenCV的视频图像组态 (4) :劈裂动画效果
- 基于OpenCV的视频图像组态 (5) :擦除动画效果
- 基于OpenCV的视频图像组态 (6): 形状动画效果
- 基于OpenCV的视频图像组态 (7) :轮子动画效果
- 基于OpenCV的视频图像组态 (12): 翻转式由远到近动画效果
- 基于OpenCV的视频图像组态 (2) :动画总体
- 基于OpenCV的视频图像组态 (3):常见PPT动画1
- 基于OpenCV的视频图像组态 (1) :时钟
- 基于OpenCV的视频图像组态 (9):CEF浏览器初步
- 基于OpenCV的视频图像组态 (14):音量控制
- 基于OpenCV的视频图像组态 (10): CEF浏览器与图形软件互嵌
- 基于OpenCV的视频图像组态 (11): CEF浏览器与C++通信
- 基于OpenCV的视频图像组态 (13):VLC Player解码帧数据
- 风火轮 –动画效果:擦除、形状、轮子、随机线条、翻转远近、缩放、旋转、弹跳效果
- 基于OPENCV的视频图像处理算法和应用
- 在DirectShow的视频图像上叠加线条和文字
- 在DirectShow的视频图像上叠加线条和文字
- 十五分钟学会用python编写小游戏
- ADAMS shortcut
- BAT机器学习面试题及解析(256-260题)
- Mysql -SOUNDEX()函数
- 设计模式学习笔记(四)抽象工厂模式
- 基于OpenCV的视频图像组态 (8) :随机线条动画效果
- Tiny6410 的NandFlash(K9GAG08U0E)
- DecaWave产品简略总结
- 第十五周项目一(3)——验证算法之直接选择排序
- iOS开发UI篇—Quartz2D复杂图形绘制(三) 图片文字,进度条,饼形图,小黄人
- 初探Laravel框架中的源码(一)
- 高德地图(一)之简单集成
- Android studio提示Android studio 在gradle文件中引入support:appcompat-v7:22.2.0包的时候出现Failed to resolve的错误
- 获取在CS-money上某件物品价格波动的图表