2012-07-14 77 views
2

檢測顯著不同圖像I具有仍然捕獲一晚的由一個攝像頭的過程中的圖像。大部分是相同的,因爲圖像中的照明是均勻的。然而,其中一些與其餘的顯着不同 - 它們在框架中具有可見的人體運動。從一組,如與OpenCV的或SimpleCV

我該如何檢測哪些圖像明顯不同,這樣運動會包含在它們中?更好的是,有沒有一種方法專門檢測運動

我猜,像OpenCV的或SimpleCV庫可以很容易地做到這一點,但我不限於使用那些人。

回答

6

在SimpleCV,

cam = Camera() 
prev = cam.getImage() 
while True: 
    current = cam.getImage() 
    fs = current.findMotion(prev, method="LK") 
    if fs: #if there's motion 
     print "motion found" 
    prev = current 

Image.findMotion()使用光流來檢測運動。你可以很容易地使用它。增加一些關於你期望有多少動作的條件。

fs.dxfs.dy會給你所有檢測到運動的點。

我已在其中我從照相機和通過檢測水平和垂直運動的輸入的例子中,I控制Banshee媒體播放器。你可以在我的GitHub上找到它。

1

如果你有第一個圖像是相似類型的,你會發現從第一個所有圖像的絕對差異,並有閾值的發現是顯著不同的圖像。 同樣在OpenCV的,用於檢測視頻中的運動,這樣的事情是可以做到: http://sundararajana.blogspot.in/2007/05/motion-detection-using-opencv.html

+0

感謝您的回答。你有沒有機會找到代碼樣本來找出兩幅圖像之間的絕對差異?謝謝! – 2012-07-14 06:29:33

+0

在openCV中,您必須首先爲圖像聲明2個矩陣,將圖像轉換爲灰度,然後您可以使用'absdiff()'函數。您可以查看http://www.developerstation.org/2011/03/frame-differencing-using-opencv-in-c.html中相同的示例。 – Rndm 2012-07-14 06:32:53