求psnr的問題??? |
答題得分者是:silverfoxkkk
|
bvd
一般會員 發表:9 回覆:12 積分:4 註冊:2006-10-31 發送簡訊給我 |
各位高手:小弟我用BCB寫了一個求psnr的式子,
void __fastcall TForm1::Button2Click(TObject *Sender) { Graphics::TBitmap *Orgimage=new Graphics::TBitmap, *Harrinverse=new Graphics::TBitmap; Orgimage->Assign(Image1->Picture->Bitmap); Harrinverse->Assign(Image2->Picture->Bitmap); Orgimage->PixelFormat=pf8bit; Harrinverse->PixelFormat=pf8bit; Byte *ptr1,*ptr2; int H=Image1->Height; int W=Image1->Width; double se=0.0,mse=0.0,sum=0.0,psnr=0.0; for(int j=0;j ptr1=(Byte*)Orgimage->ScanLine[j]; ptr2=(Byte*)Harrinverse->ScanLine[j]; for(int i=0;i se=(ptr1[i]-ptr2[i])*(ptr1[i]-ptr2[i]); sum =se; } } delete Harrinverse; delete Orgimage; mse=sum/H*W; psnr=255*255/mse; Edit1->Text=psnr; } 但總是會出現Access violation at a dress 0040232B in module 'Project1.exe' read of address 01900001.的錯誤訊息,而後 在紅色字體的地方反白,大概是那有問題,弄了好久不知如何解??能不能麻煩各位高手幫我看一下程式,指導一下,感激不盡!!
------
加強磨鍊 |
silverfoxkkk
一般會員 發表:6 回覆:12 積分:8 註冊:2004-11-08 發送簡訊給我 |
|
bvd
一般會員 發表:9 回覆:12 積分:4 註冊:2006-10-31 發送簡訊給我 |
|
silverfoxkkk
一般會員 發表:6 回覆:12 積分:8 註冊:2004-11-08 發送簡訊給我 |
你好:
小弟也是新手,一起研究看看,小弟也沒把程式拿去執行, 試著改成以下作法,再看看囉。 se=((double)ptr1[i]-(double)ptr2[i])*((double)ptr1[i]-(double)ptr2[i]); 另外此 address 的錯誤,可能是 ScanLine 時所發生, 因為 Image1 的 width 並不一定會等於圖片 的width,同理 height 也是如此, int H=Image1->Height; 改為 image1->Picture->Height; int W=Image1->Width; 改為 image1->Picture->Width; |
bvd
一般會員 發表:9 回覆:12 積分:4 註冊:2006-10-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |