[問題] 關於unsigned char如何比大小
我想要讀入一個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
→
10/27 10:04, , 1F
10/27 10:04, 1F
→
10/27 10:05, , 2F
10/27 10:05, 2F
推
10/27 10:31, , 3F
10/27 10:31, 3F
→
10/27 10:32, , 4F
10/27 10:32, 4F
→
10/27 18:40, , 5F
10/27 18:40, 5F
→
10/27 18:41, , 6F
10/27 18:41, 6F
推
10/27 18:56, , 7F
10/27 18:56, 7F
→
10/27 18:57, , 8F
10/27 18:57, 8F
→
10/27 18:58, , 9F
10/27 18:58, 9F
→
10/27 18:59, , 10F
10/27 18:59, 10F
→
10/27 18:59, , 11F
10/27 18:59, 11F
→
10/27 19:00, , 12F
10/27 19:00, 12F
推
10/27 19:03, , 13F
10/27 19:03, 13F
→
10/27 19:04, , 14F
10/27 19:04, 14F
→
10/27 19:04, , 15F
10/27 19:04, 15F
→
10/27 19:05, , 16F
10/27 19:05, 16F
→
10/27 19:05, , 17F
10/27 19:05, 17F
→
10/27 19:11, , 18F
10/27 19:11, 18F
→
10/27 19:11, , 19F
10/27 19:11, 19F
推
10/27 19:14, , 20F
10/27 19:14, 20F
→
10/27 19:15, , 21F
10/27 19:15, 21F
→
10/27 19:16, , 22F
10/27 19:16, 22F
→
10/27 19:29, , 23F
10/27 19:29, 23F
→
10/27 19:30, , 24F
10/27 19:30, 24F
→
10/27 19:31, , 25F
10/27 19:31, 25F
推
10/27 19:41, , 26F
10/27 19:41, 26F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章