實現(xiàn)抖音視頻抖動效果---OpenCV-Python開發(fā)指南(53)

抖音視頻抖動原理

感興趣的不妨隨便弄一個視頻使用抖音抖動效果觀察。這里,博主建議讀者使用國際象棋的視頻圖像,這種方塊的格式更能看清細微的抖動變化。

我們觀察抖音抖動視頻會發(fā)現(xiàn),抖動效果的原理是對視頻中的一些幀進行剪切和放大到原圖,出現(xiàn)視頻中的人或者物體放大顫動的效果,并因為視覺殘留出現(xiàn)閃影效果。

換到OpenCV中進行處理,就可以分為以下幾個步驟:

  1. 讀取原視頻,設(shè)置其抖動的幀數(shù),比如相鄰的9幀的圖像按照圖像中心進行剪裁,然后縮放到原來的尺寸
  2. 設(shè)置抖動中不變的幀數(shù),比如以9幀為間隔來處理圖像

實現(xiàn)抖音視頻抖動

按照原理,我們先讀取視頻,或者直接使用攝像頭。然后獲取圖像的幀數(shù)FPS,同時獲取圖像的中心Center,將圖像按比例剪裁20%之后,在放大至原圖。

下面,我們來實現(xiàn)視頻抖動效果:

#抖動視頻圖像處理
def video_shake_effect(img):
    height, width, n = img.shape
    new_img = img[int(height * 0.1):int(height * 0.9), int(width * 0.1):int(width * 0.9)]
    new_img = cv2.resize(new_img, (width, height))
    return new_img


if __name__ == "__main__":
    cap = cv2.VideoCapture("45.mp4")
    #獲取視頻幀率,視頻寬度高度,所有通過cv2.CAP_PROP_FPS獲取的參數(shù)都是浮點數(shù),而視頻寬高必須為整數(shù),所以要進行強制類型轉(zhuǎn)換。
    fps = cap.get(cv2.CAP_PROP_FPS)
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    i = 1
    count = 5
    fourcc = cv2.VideoWriter_fourcc(*'MJPG')
    videoWriter = cv2.VideoWriter("output.avi", fourcc, fps, (width, height))
    while (cap.isOpened()):
        ret, frame = cap.read()
        if ret:
            if (i % 5 == 0 or 0 < count < 5):
                frame = video_shake_effect(frame)
                videoWriter.write(frame)
            else:
                count = 5
                cv2.imshow('video', frame)
                videoWriter.write(frame)
            i += 1
            c = cv2.waitKey(1)
            if c == 27:
                break
        else:
            break
    cap.release()
    videoWriter.release()
    cv2.destroyAllWindows()

運行之后,效果如下:


output.gif

上圖抖動節(jié)奏有間歇,是因為博主將GIF幀率調(diào)小了點,實際情況抖動效果基本一致。上面程序應(yīng)該很好理解都是前面博文的知識,這里不在贅述,至于抖動頻率算法,這里是打開視頻先抖動5幀,然后每間隔5幀率抖動一次。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容