兩幀相減法實現鏡頭邊界檢測

2021-10-03 19:49:36 字數 1710 閱讀 6357

最為簡單的是兩幀相減法:即前後兩幀相減,通過閾值選出一部分變化的畫素,當被選出的畫素比例大於閾值時,視為鏡頭轉換。

所以有兩個引數,要手工調,很不方便。(或許可以用深度學習試一試)

再者,當兩個鏡頭變化時,會有連續的幀出現變化,可以用出現變化的幀去抑制下一變化幀,從而只選取一幀。

import cv2

import numpy as np

cap = cv2.videocapture(

'./test.mp4'

)#閾值

compare=

30000

pixel_gate=

240width=

0height=

0area=

0scale=

0.5restrain=

1start=

1while cap.isopened():

#讀幀 _, frame = cap.read(

)if start:

#初始化

height =

int(frame.shape[0]

*scale)

width =

int(frame.shape[1]

*scale)

area=width*height

frame_pre=np.zeros(

(height,width)

) start=

0else

:#將縮小灰度化便於使用

frame_resize = cv2.resize(frame,

(width,height)

,interpolation=cv2.inter_cubic)

frame_gray = cv2.cvtcolor(frame_resize,cv2.color_rgb2gray)

frame_np=np.array(frame_gray)

result=frame_np-frame_pre

#比較閾值

count=

0for i in

range

(height)

:for j in

range

(width)

:if result[i]

[j]>pixel_gate:

count=count+

1 result[i]

[j]=

255else

: result[i]

[j]=

0#多個變化連續幀抑制

if count>

23000

and restrain:

print

(count)

restrain=

0else

: restrain=

1 cv2.imshow(

'compare'

,result)

cv2.imshow(

'frame'

,frame)

frame_pre=frame_np

cv2.waitkey(25)

cap.release(

)cv2.destroyallwindows(

)

悅 實現兩個數減法

將上述四個檔案放到同乙個資料夾下,比如我放到了桌面的test資料夾中,路徑 home clay 桌面 test 快捷鍵ctrl shift t開啟終端,進入到該路徑,命令如下 cd home clay 桌面 test接著輸入make執行程式,效果如下圖 接著輸入.sub執行可執行檔案,效果如下圖 按...

db2實現兩個數相減 DB2 日期相減 學步園

這篇短文是為那些剛接觸db2並想理解如何操作日期和時間的新手而寫的。使用過其它資料庫的大部分人都會很驚喜地發現在db2中操作日期和時間是多麼簡單。要使用 sql 獲得當前的日期 時間及時間戳記,請參考適當的db2暫存器 select current date from sysibm.sysdummy...

css實現兩邊固定,中間自適應

經常有需求,所以就總結一下,有需要的時候直接複製貼上啦 布局的原理是margin負值法。首先需要在center元素外部包含乙個div,包含div需要設定float屬性使其形成乙個bfc,並設定寬度,並且這個寬度要和left塊的margin負值進行配合,具體原理參考這裡。這裡對聖杯布局解釋特別詳細。h...