C_and_CPP 板


LINE

我想要讀入一個raw的512*512灰階圖檔作濾波 所以byte為單位將每個pixel存進矩陣裡 又因為pixel裡面的值應為0~255而非-128~127 所以我將矩陣宣告如下 unsigned char img[512][512]; 接下來因為用3*3的mask與原圖作convolution後 我把它存到一個新的矩陣(512+3-1=514) unsigned char newimg[514][514]; 後來發現因為conv出來的數值有可能超過255或低於0 於是作了如下的for loop做修正 for (int i=0; i<514; i++) for (int j=0; j<514; j++) { if (newimg[i][j]>255) newimg[i][j]=255; else if (newimg[i][j]<0) newimg[i][j]=0; } 但發現build會出現 warning: comparison is always false due to limited range of data type 我想可能是char無法跟整數直接比較大小 於是用了一個很笨的方法... 重新宣告一個double a 把img的值先assign給它再做比較 程式可以跑而且圖形也是正確的 但仍然會出現 warning: converting to `unsigned char' from `double' 想問大家要怎樣作才能讓warning不再出現 而且又可以讓unsigned char裡頭的值比大小? 謝謝! --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.35.1.66
1F:→ blexx:newimg已經存成unsigned char,不可能比255大。 10/27 10:04
2F:→ blexx:要在存進去之前就先檢查 10/27 10:05
3F:推 VictorTom:計算過程可能uchar不夠放就用比較大的變數型態暫存. 10/27 10:31
4F:→ VictorTom:不然等到寫回uchar array以後才判斷就沒意義了@_@" 10/27 10:32
5F:→ ray3226:樓上兩位大大 所以我才用一個較大的變數型態double a暫存 10/27 18:40
6F:→ ray3226:而且再存進去之前先檢查 我的意思是這樣會產生warning.... 10/27 18:41
7F:推 VictorTom:貼一下code來看, 從你貼出來的部份看不出有做這種事@_@" 10/27 18:56
8F:→ VictorTom:你的warning發生在 if(newimg[i][j]>255) 這行, 它明白 10/27 18:57
9F:→ VictorTom:說, newimg[i][j]是uchar, 最大就255, 你判斷它有沒有大 10/27 18:58
10F:→ VictorTom:於255這肯定會fail. <0也一樣, 一個值域在0~255的變數, 10/27 18:59
11F:→ VictorTom:(array中的一個element在這裡可以當一個變數來看待) 10/27 18:59
12F:→ VictorTom:你判斷它是否<0或者>255這些都肯定都是false(上面錯字). 10/27 19:00
13F:推 VictorTom:我看到後半段的問題了Orz 在算好的double assign給 10/27 19:03
14F:→ VictorTom:uchar變數前用顯示轉型, 如img = (uchar)(a + 0.5); 10/27 19:04
15F:→ VictorTom:+0.5是四捨五入, 你自己依需求決定有沒有必要吧:) 10/27 19:04
16F:→ VictorTom:warning是提醒你你的assignment可能有忽略到這個問題, 10/27 19:05
17F:→ VictorTom:強轉型就是跟compiler說, 我就要這麼做, 聽我的就對了XD 10/27 19:05
18F:→ ray3226:謝謝V大 之前學C++時沒學過「顯示轉型」 所以說如果不+0.5 10/27 19:11
19F:→ ray3226:它會無條件捨去嗎? 10/27 19:11
20F:推 VictorTom:忘了是顯式還是強制轉型, 小弟沒看原文書, 術語請其他大 10/27 19:14
21F:→ VictorTom:大補充吧XD 是的, 基本型態浮點轉整數一定無條件捨去:) 10/27 19:15
22F:→ VictorTom:剛想到, 考慮有負數, 還是說round_to_zero好了....@_@" 10/27 19:16
23F:→ ray3226:十分感謝V大 剛剛試成功了! 最近在學ICS影像處理的專題 10/27 19:29
24F:→ ray3226:C++很多都忘了 剛剛爬V大文章似乎對影像頗有研究 以後請多 10/27 19:30
25F:→ ray3226:多指教! 10/27 19:31
26F:推 VictorTom:什麼??對影像處理有研究!?那你一定是認錯人了....XD 10/27 19:41







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP