DrGraph图形博士

导航

基于OpenCV的视频图像组态 (7) :轮子动画效果

轮子效果

bool __fastcall TCbwAnimationEffect_Wheel::BuildMaskMat(cv::Mat& destMat,

    cv::Mat& srcMat, TRect displayRect) {

    TRect wholeRect(0, 0, displayRect.right - displayRect.left,

        displayRect.bottom - displayRect.top);

    double cx = wholeRect.right / 2.0, cy = wholeRect.bottom / 2.0;

    TCbwFloatPoint centerPoint(cx, cy);

    double unitDegree = 360 / FPattern;

    double deltaDegree = double(FCurrentIndex + 1) / FTotalFramesInOnePeriod * unitDegree;

    BYTE * pDst = destMat.data;

    for (int row = 0; row < destMat.rows; ++row)

        for (int col = 0; col < destMat.cols; ++col) {

            TCbwFloatPoint p(col, row);

            double theta = p.ThetaToPoint(centerPoint);

            if (FClockwiseFlag)

                theta = 360 - theta;

            bool inFlag = false;

            for (int i = 0; i < FPattern; ++i) {

                if (theta >= unitDegree * i && (theta - unitDegree * i) <=

                    deltaDegree)

                    inFlag = true;

            }

            *pDst++ = inFlag ? 255 : 0;

        }

    return true;

}

 

演示效果

posted on 2017-12-08 17:01  drgraph  阅读(709)  评论(0编辑  收藏  举报