2013-05-02 161 views
0

我正在研究視頻鏡頭檢測的邊緣變化比率算法。我有算法的基本思想,並使用OpenCV實現了其中的一部分,其中包括使用Canny算法來識別邊緣。邊緣變化率

但我很困惑如何找到兩個視頻幀之間的邊緣像素和進入和退出像素的數量。 我對OpenCV的 工作請幫我一些代碼或邏輯或OpenCV函數做

感謝

回答

0

至於我明白你的問題......如果你的灰度圖像是frameg那麼下面API產生具有邊緣的圖像。

Canny(frameg,frameEdge,50,150,3,false); 

其中frameEdge是包含邊緣的圖像。 frameEdge是邊緣像素爲白色(255)而其他像素爲黑色(0)的二值圖像。

for(int r = 0;r<frameEdge.rows;r++) 
    { 
    for(int c=0;c<frameEdge.cols;c++) 
    { 
     if(*(frameEdge.data + frameEdge.cols*r + c) == (uchar)255) 
      { 
       Point edgepixel; 
       edgepixel.x = c; edgepixel.y = r; 
       myedges.push_back(edgepixel); 
      } 
    } 
    } 

因此,您可以輕鬆掃描圖像並找到白色像素並存儲它們的位置。這樣你可以找到邊緣像素。製作一個數組vector<Point> myedges來存儲邊緣像素位置。對視頻中的每個幀進行此操作並進行必要的比較。注意:我拍攝的圖像爲cv::Mat。您也可以使用IplImage

+0

感謝您的回覆。我認爲這假設一個像素是完全黑色或白色。不會有部分彩色像素的情況嗎?此外,我在計算每幀進入和退出像素的數量方面存在問題。任何幫助! – PratPor 2013-05-03 13:58:56

+0

那裏不會是任何部分彩色的像素......在圖像上執行Canny函數後,它只是一個二進制圖像......您輸入的像素和現有像素意味着什麼?請你詳細說一下.. – 2013-05-03 14:19:03

+0

假設我們有兩個框架E和E'進行比較。所以這裏是我從一篇研究論文中得到的進入和退出像素的定義。 「進入邊緣像素是在當前幀E中存在的邊緣,並且在下一幀E'中距離r遠離 。退出邊緣像素 是存在於下一幀E' 中的邊緣像素,並且在當前幀E中比r更遠「。這裏r可以是一些像素數6。我也沒有得到它的正確含義,也沒有辦法做到這一點。 – PratPor 2013-05-03 14:45:49