none
C# 讀取影像問題 越來越慢 RRS feed

  • 問題

  • 想問大家 

    1. 我現在寫  按下按鈕   =>   webcam就會打開

    2. 我連續按下按鈕   按越多下  發現picturebox裡面顯示的影像越來越慢   (主要的問題)

    3. 因為我想達到的目的是 我在另幾個視窗處理影像 類似霍夫圓 、contour 之類的  不會讓畫面延遲這麼嚴重

    ............

    Image<Bgr, byte> current; Capture webcam = new Capture(1); private void processCamera(object sender, EventArgs e) { current = webcam.QueryFrame(); pictureBox2.Image = current.Bitmap; } private void open_Click(object sender, EventArgs e) { Application.Idle += processCamera; } .

    .............

    想問大家怎麼樣避免畫面越來越慢的問題呢??

    本人是新手 有不懂的地方還請指教!

    謝謝大家><



    • 已編輯 Jmzeh 2018年5月29日 下午 12:31
    2018年5月29日 下午 12:16

所有回覆

  • 檢查記憶體是不是越吃越大,是的話,在你重複的部份加上記憶體釋放的程式碼。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2018年5月29日 下午 02:56
  • 應該是因為這一行所導致的:

    private void  open_Click(object sender, EventArgs e)
    {
        Application.Idle += processCamera;
    }

    每一次 Click,就會將 Idle 多註冊一次事件。一開始 Idle processCamera 只會跑一次,每多按一次 open,processCamera 就會在 Idle 時多跑一次。試試看把這行移到 Form_Load 之類的事件裡試試~


    • 已編輯 Mystic Lin 2018年5月29日 下午 03:04
    2018年5月29日 下午 03:04
  • 謝謝您的指教!

    總共有3個bottoms

    1. 我在C# Form裡面  寫了一個 buttom1 => 利用上面的程式碼開了一個視窗 ex.顯示在picturebox1

    2. 我在Form裡面 另外又多寫了一個buttom2 => 會開啟另一個視窗 picturebox2 在這個視窗裡面是在處理霍夫圓

    3. 在裡面還有另一個buttom3 => 又會開啟另一個視窗 picturebox3 在這個視窗做 contours 處理

    然後當我發現  按第一個開啟視窗的時候  鏡頭拍的畫面的流暢度很好

    然後接著開啟處理霍夫圓的視窗的時候 發現  畫面有稍微變鈍了一點

    再開contours 更加了頓了一點      

    一開始我在想可能是處理這麼多事情才會使得畫面變鈍了

    後來發現 我在按了bottom1  單純的開啟視窗而已沒有做任何處理 

     然後第二次再按同一次的bottom1 發現變鈍了

    然後再按第三次bottom1 變的更頓了 大概的問題是這樣子~

    謝謝您的指教,我發問解釋的不太清楚! 下次我會再改進的!! 

    真的謝謝您!


    2018年5月29日 下午 03:45
  • 好! 謝謝您!  我會再去做嘗試看看   
    2018年5月29日 下午 03:47
  • 檢查記憶體是不是越吃越大,是的話,在你重複的部份加上記憶體釋放的程式碼。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    謝謝您的指教!

    總共有3個bottoms

    1. 我在C# Form裡面  寫了一個 buttom1 => 利用上面的程式碼開了一個視窗 ex.顯示在picturebox1

    2. 我在Form裡面 另外又多寫了一個buttom2 => 會開啟另一個視窗 picturebox2 在這個視窗裡面是在處理霍夫圓

    3. 在裡面還有另一個buttom3 => 又會開啟另一個視窗 picturebox3 在這個視窗做 contours 處理

    然後當我發現  按第一個開啟視窗的時候  鏡頭拍的畫面的流暢度很好

    然後接著開啟處理霍夫圓的視窗的時候 發現  畫面有稍微變鈍了一點

    再開contours 更加了頓了一點      

    一開始我在想可能是處理這麼多事情才會使得畫面變鈍了

    後來發現 我在按了bottom1  單純的開啟視窗而已沒有做任何處理 

     然後第二次再按同一次的bottom1 發現變鈍了

    然後再按第三次bottom1 變的更頓了 大概的問題是這樣子~

    謝謝您的指教,我發問解釋的不太清楚! 下次我會再改進的!! 

    真的謝謝您!


    2018年5月29日 下午 03:50
  • 應該是因為這一行所導致的:

    private void  open_Click(object sender, EventArgs e)
    {
        Application.Idle += processCamera;
    }

    每一次 Click,就會將 Idle 多註冊一次事件。一開始 Idle processCamera 只會跑一次,每多按一次 open,processCamera 就會在 Idle 時多跑一次。試試看把這行移到 Form_Load 之類的事件裡試試~


    好! 謝謝您!  我會再去做嘗試看看   
    2018年5月29日 下午 03:51