看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《kiyasuto1 (kiy)》之銘言: : 各位前輩好!!小弟是用BCB作的二值化,寫了個副程式, : 想用圖的所有像素灰階值相加除以總像素數目來作門檻! : (門檻=所有像素灰階值相加/總像素數目) : 程式碼如下 : void tw(Byte **a) : { : int Bsum; : float Background; : for(int i = 0; i < ImgWidth; i++) : { : for(int j = 0; j < ImgHeight; j++) : { : Background=(Bsum+=a[i][j])/((ImgHeight)*(ImgWidth)); : } : } 這一段改成 for(int i = 0; i < ImgWidth; i++) { for(int j = 0; j < ImgHeight; j++) { Bsum+=a[i][j]; } } Background= Bsum /(ImgHeight)*(ImgWidth); : for(int i = 0; i < ImgWidth; i++) : { : for(int j = 0; j < ImgHeight; j++) : { : if( a[i][j] > Background ) : a[i][j] = 0; : else : a[i][j] = 255; : } : } : } : 但是編譯結果好像在計算門檻那一行爆掉了... : 希望前輩們能指正一下小弟~~感謝!!拜託~ 至於為什麼出錯.... 自己重想一下邏輯 都還沒加完就心急著平均 XD 好吧好人當到底 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.65.218 ※ 編輯: goodrain 來自: 140.115.65.218 (10/05 23:23) 毆我好像有點懂你的邏輯了XD 那樣的話應該是把A[i][j]除完後直接與Background相加就好 ※ 編輯: goodrain 來自: 140.115.65.218 (10/05 23:29)
tropical72:似乎沒改對.. 轉型問題. 10/05 23:27
tropical72:(float)Bsum /(ImgHeight)*(ImgWidth); 10/05 23:27
goodrain:歐歐如果照我原本寫的要增加樓上這個 10/05 23:30
goodrain:如果是我修文的那個邏輯的話...不用Bsum XD 10/05 23:31
goodrain:痾雖然不用Bsum但是也要小心轉型問題不然除完會變成0 XD 10/05 23:33
kiyasuto1:想請問是改成文中那一段嗎??Bsum要改成float形態嗎?? 10/05 23:54
tropical72:Bsum 不適合用 float, 加到後來精度問題會等於沒加。 10/06 00:15