簡體   English   中英

使用opencv在視頻上疊加圖像

[英]Overlay image on a video using opencv

我使用此功能使用OpenCV放置覆蓋圖像。

void OverlayImage(IplImage* src, IplImage* overlay, CvPoint location, CvScalar S, CvScalar D) {
for (int i = location.y; i < (location.y + overlay->height); i++) {
    for (int j = location.x; j < (location.x + overlay->width); j++) {
        CvScalar source = cvGet2D(src, i, j);
        CvScalar over   = cvGet2D(overlay, i-location.y, j-location.x);
        CvScalar merged;

        for(int i = 0; i < 4; i++)
            merged.val[i] = (S.val[i] * source.val[i] + D.val[i] * over.val[i]);

        cvSet2D(src, i + location.y, j + location.x, merged);
    }
}
}

然后使用這樣的功能-

OverlayImage(temp, tempad, cvPoint(10, 10), cvScalar(0,0,0,0), cvScalar(1,1,1,1)); 

隱藏像 圖片1

OverlayImage(temp, tempad, cvPoint(10, 10), cvScalar(1,1,1,1), cvScalar(0,0,0,0)); 

用於顯示 image2

我使用這些功能的方式是:

if (frame_number < 400)
    OverlayImage(temp, tempad, cvPoint(10, 10), cvScalar(1,1,1,1), cvScalar(0,0,0,0));
else 
    OverlayImage(temp, tempad, cvPoint(10, 10), cvScalar(0,0,0,0), cvScalar(1,1,1,1));

但是第一張圖像的區域有些失真,我希望使該圖像在400幀視頻后消失。 如何使該區域清晰?

請幫忙!

好了,您可以復制不帶疊加層的圖像 ,然后,當您不想顯示疊加的圖像時,可以顯示副本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM