看板 C_Sharp 關於我們 聯絡資訊
我目前在寫一支關於影像色彩空間轉換的程式 是從RGB轉換到YUV 程式結果是沒有問題的 但是在消耗時間上出了一個不像bug的bug 以我們現在用的2560X1920的影像來說 做完一次轉換大約需要1.2秒左右 一開始以為是影像太大的緣故 後來把每一個pixel做轉換的時間記錄下來 發現某些時候在轉換的過程中會莫名停頓一下 會有這種發現是我在函式中放了兩個時間記錄點 DateTime T1 ,T2; 然後去計算這兩點之間差了多少ms 發現有的時候 這兩點之間 就算中間沒有任何程式碼 竟然差了15ms 正常狀況下中間沒有任何程式碼 時間差距應該小於1ms 猜測是可能CPU那段時間去執行別的程序了 不過這樣解釋也怪怪的 因為其他函式也不會這樣 希望有人可以幫我解答 以下是我的程式碼: private void pixel2yuv(ref int[] o, ref double[] y) { DateTime T1 ,T2; double nor_R, nor_G, nor_B; double kr = 0.299, kb = 0.114; nor_R = o[0] / 255.0; nor_G = o[1] / 255.0; T1 = DateTime.Now; T2 = DateTime.Now; Console.Write(CalTime(T1, T2)); //輸出時間記錄點差了多少 nor_B = o[2] / 255.0; y[0] = kr * nor_R + (1 - kr - kb) * nor_G + kb * nor_B; y[1] = 0.436 * ((nor_B - y[0]) / (1 - kb)); y[2] = 0.615 * ((nor_R - y[0]) / (1 - kr)); } 麻煩各位了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.246.32
Anonymoux:datetime.now 本身就有誤差了 只看一次也不準 04/01 01:25
optimist9266:或許用Stopwatch會比較準確喔 04/01 04:04
horngsh:推2F 04/01 09:29
mlmfree:感謝樓上幾位 我試試!! 04/01 09:56
deuter:詳細說明: http://goo.gl/gcoT4 04/01 11:40
kavana999:Stopwatch是做研究的好幫手... 04/01 17:03
Anonymoux:Stopwatch 其實不太準 04/07 22:41
horngsh:不太準,有實證嗎? 04/08 09:46