基于OpenCV的视频图像组态 (8) :随机线条动画效果
2017-12-09 12:15
696 查看
随机线条效果实现
演示效果
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 ]) { totalLines.erase(totalLines.begin() + n); n = random(totalLines.size()); } FOccurredLines[totalLines ] = 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; }
演示效果
相关文章推荐
- 基于OpenCV的视频图像组态 (8) :随机线条动画效果
- 基于OpenCV的视频图像组态 (12): 翻转式由远到近动画效果
- 基于OpenCV的视频图像组态 (4) :劈裂动画效果
- 基于OpenCV的视频图像组态 (7) :轮子动画效果
- 基于OpenCV的视频图像组态 (7) :轮子动画效果
- 基于OpenCV的视频图像组态 (5) :擦除动画效果
- 基于OpenCV的视频图像组态 (5) :擦除动画效果
- 基于OpenCV的视频图像组态 (6): 形状动画效果
- 基于OpenCV的视频图像组态 (6): 形状动画效果
- 基于OpenCV的视频图像组态 (4) :劈裂动画效果
- 基于OpenCV的视频图像组态 (12): 翻转式由远到近动画效果
- 基于OpenCV的视频图像组态 (2) :动画总体
- 基于OpenCV的视频图像组态 (2) :动画总体
- 基于OpenCV的视频图像组态 (3):常见PPT动画1
- 基于OpenCV的视频图像组态 (3):常见PPT动画1
- 基于OpenCV的视频图像组态 (1) :时钟
- 基于OpenCV的视频图像组态 (1) :时钟
- 基于OpenCV的视频图像组态 (9):CEF浏览器初步
- 基于OpenCV的视频图像组态 (14):音量控制
- 基于OpenCV的视频图像组态 (9):CEF浏览器初步