基于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
原创粉丝点击