[問題] OPENCV處理速度一問(語法比土法煉鋼快?)

看板C_and_CPP (C/C++)作者 (摸魚)時間12年前 (2013/10/21 19:26), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串1/3 (看更多)
小弟剛接觸OPENCV不久 因為要處理課堂作業 但對各種新的又不是很了解 遇到圖像處理:均值化 銳利化 都是用土法煉鋼的方式寫(寫好幾個for) 然後一個一個下去算 比方說我想要弄個均值化 需要矩陣A[]={1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9} 但是前陣子不會語法所以我就直接用for下去寫了 長這樣http://ppt.cc/zETJ (我用的是25個1/25 的5x5矩陣) 剛剛才找到了可以替代的均值化的語法: cvSmooth(img,img, CV_BLUR ,5,5,0,0); 測試後發現 空間變簡潔了 處理時間居然也變短了一些些 想請問一下節省下來的這些時間是跑到哪去了 就我這個萬年新手的認知 我還以為與法只是單純先幫你把演算法「打包好」放在函式庫裡給你呼叫 換言之當程式下去跑的時候跑到cvsmooth這個語法實他就會把原先寫好的for拿出來跑 這個認知是哪裡有錯阿? 好奇在這邊向高手請教一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.79.78 ※ 編輯: oskens 來自: 140.122.79.78 (10/21 19:27)

10/21 19:31, , 1F
是你的code寫得太差了
10/21 19:31, 1F
嗯@@.... 如果說是對語法沒有概念這我認了 但是如果要用矩陣處理 以土法煉鋼而言這不是最直覺的方式嗎? 所以樓上的意思是用土法煉鋼應該也有漂亮的寫法,只是我這樣練太差嗎? 受教了 ※ 編輯: oskens 來自: 140.122.79.78 (10/21 19:39) ※ 編輯: oskens 來自: 140.122.79.78 (10/21 19:40)

10/21 19:47, , 2F
印象中opencv本身會跟Inrel 的CPU專用lib作連結,所以
10/21 19:47, 2F

10/21 19:47, , 3F
會加速內建函式的運算速度。
10/21 19:47, 3F

10/21 19:47, , 4F
用 for loop 基本上是沒錯, 可是你不覺得乘法多得離譜嗎
10/21 19:47, 4F

10/21 19:47, , 5F
*intel
10/21 19:47, 5F

10/21 19:47, , 6F
寫成這樣 compiler 沒辦法 optimize 成比較順暢的機器碼
10/21 19:47, 6F

10/21 19:50, , 7F
我也不是主張要你注重這種小細節,交給OpenCV去煩惱就好了
10/21 19:50, 7F

10/21 19:55, , 8F
確實這段code有待加強@@
10/21 19:55, 8F
文章代碼(AID): #1IPGznjU (C_and_CPP)
文章代碼(AID): #1IPGznjU (C_and_CPP)