線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1490
推到 Plurk!
推到 Facebook!

請問陣列值轉到IMAGE裡面為啥會出錯@@

尚未結案
k99
一般會員


發表:8
回覆:16
積分:4
註冊:2005-07-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-03 12:33:20 IP:203.68.xxx.xxx 未訂閱
請問各位大大 我在陣列裡面作運算後 然後把陣列裡面的值轉到IMAGE->canvas->pixels[x][y] 可是問題來了~~我做了2個label~~ label1對應到陣列的[x][y] label2對應到IMAGE->canvas->pixels[x][y] 大部分的值轉過去後會自動轉成整數(自動轉不是小弟寫的 是BCB自己幫我轉的) 小於0的會自動變成0 可是陣列裡面ㄉ值有些是在 -512.XXX(小數點) 附近~~~ label1是顯示-512.XXX 可是label2卻是顯示 13160660 ~還有一堆都是在-512附近的 label2看到的值都是大的驚人 = = 會不會差太多阿 只有-512附近會這樣而已 其他負更大的會自動轉成0 小弟作都是這邊錯 是不能像我這樣直接轉嗎 ?? 煩請大大指教 ^.^
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-03 15:56:38 IP:210.68.xxx.xxx 未訂閱
您好: 您宣告陣列的資料型態與pixels[x][y]的資料型態(TColor)應該是不樣的吧
k99
一般會員


發表:8
回覆:16
積分:4
註冊:2005-07-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-03 17:19:41 IP:203.68.xxx.xxx 未訂閱
大大你好  陣列的話是我參考的程式裡面的  應該是以下這段    
 
try
        {
                YBlock = new  Block_64 *[IDXH];
                for(j=0;j
那請問大大   這個YBlock是哪一種型態呢??
還有我不懂大大說的 "pixels[x][y] 的資料型態"  我只是直接開個新的image 來放我陣列裡面的值而已耶??    只有當遇到 "-512" 這個值時才會出錯 像是-752  -900 都會轉成0耶  = =
請大大指教囉  ^o^     
        
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-03 17:36:00 IP:210.68.xxx.xxx 未訂閱
您好: 您應該去看Block_64是怎麼宣告的.. YBlock只是資料型態為Block_64的指標而已 而且就24bit彩色影像來說,R:0~255, G:0~255, B:0~255,不會有負值出現
k99
一般會員


發表:8
回覆:16
積分:4
註冊:2005-07-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-03 19:05:59 IP:203.68.xxx.xxx 未訂閱
回大大 我看不懂YBlock怎麼宣告的耶 = = 有負的值是因為我再做dct的關西~~當初原作者是把dct後的值放在 YBlock 裡面 而我想做的是把YBlock 陣列裡面的值再拿到Image裡面而已 只是遇到-512都會出錯 我也不知道為啥 >"< 還是說我這麼做是不對的 = = 沒關西 謝謝大大幫我這麼多 我這次先不要拿到image裡面試試 先寫IDCT看會不會得到原圖 ^^ 還有請問大大 我開圖是開800*600的 所以dct後的YBlock也是800*600 但因為我看不懂她的宣告 那如果小弟想要另外開個800*600的陣列 是否是這樣寫 float aa[800][600] ; ??? 如果是的話 那我處理完後 是否可以把aa丟到image裡面呢 ?? 但是大大講過型態的問題 image市不市只會接受正整數呢?? 不然怎麼都會幫我把負值自動轉成0 而有小數點的都去掉了 ??
k99
一般會員


發表:8
回覆:16
積分:4
註冊:2005-07-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-03 19:29:40 IP:203.68.xxx.xxx 未訂閱
慘 = = 剛剛試做的結果---無法開個800*600的陣列 >"< 說我堆疊益位..................
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-03 20:02:40 IP:210.68.xxx.xxx 未訂閱
您可以參考下面連結的作品比較快 < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33309">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33309 【BCB】【發表】影像處理轉換篇 by MilesWamg
 
一灰階圖,(Lena.bmp 256*256),以下五種轉換執行結果、轉換後圖形、能量分佈、總誤差、PSNR與SNR。含DFT(Discrete Fourier Transform運算)運算
、Discrete Hartly Transform 運算、Discrete Consin Transform 運算
、Walsh運算與Hadaman運算。以Bolrad C  實作,其功能如下。
1.開啟檔案;載入一bmp圖檔。
2.儲存檔案將輸出或輸入圖區的圖形純程bmp檔。
3.轉換方式選擇;有五種方式提供圖形轉換。
4.轉換方式選擇:可選擇轉換與轉換加反轉換,結果輸出於”輸出結果” 。
5.灰階化/載入:將輸入之圖形載入記憶體並將彩色圖形灰階化。
6.執行:執行轉換功能,score bar為轉換後保留元素N*N範圍。(8*8中留下N*N)
7.Error: 計算:總誤差,PSNR,SNR。
8.proof:計算轉換矩陣與其轉置矩陣之乘積是否為單位矩陣。
9.plus:轉換結果(不含反向運算)將小於0大於255之值濾除。
( if value <0 then value =0; if value >255 then value =255)
觀察轉換中結果。
其執行檔編譯成獨立執行檔!!
k99
一般會員


發表:8
回覆:16
積分:4
註冊:2005-07-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-03 22:20:35 IP:203.68.xxx.xxx 未訂閱
大大  可以再問你一個問題嗎  我自己寫了一個轉DCT後再做IDCT轉回來的程式  可是每次轉回來的值都跟原先的不一樣  我也檢查了很多遍  但就是找不到原因  可以麻煩大大幫我看一下我的程式哪邊有錯嗎 = =   或是給我提醒哪邊有錯誤的觀念 ^0^  
 
typedef struct
{
        unsigned char gg_arr[8][8];
        unsigned char g_arr[8][8];
        float dct_arr[8][8];
}    void DCT(float result[8][8], unsigned char source[8][8])
{
        float C[8],Cos[8][8];
        float temp;
        int x,y,u,v;            for(x=0;x<8;x  )
        {
                for(y=0;y<8;y  )
                {
                        Cos[x][y]=cos((2*x 1)*y*(3.14)/16);
                }
        }
        C[0]=1/sqrt(2);
        for(x=1;x<8;x  )
                C[x]=1;            for(u=0;u<8;u  )
                for(v=0;v<8;v  )
                {
                        temp=0.0;
                        for(x=0;x<8;x  )
                                for(y=0;y<8;y  )
                                        temp =Cos[x][u]*Cos[y]*( >/ >= >* >[ >  >. >. >.>> >. >. >.>> >.>     
        
系統時間:2024-05-09 8:11:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!