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

兩張長寬大小不同的BMP檔作圖型比對該如何做呢?

缺席
guitarjong
一般會員


發表:1
回覆:0
積分:0
註冊:2013-07-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-07-22 15:16:14 IP:27.52.xxx.xxx 訂閱
我是想讓兩張不同大小的圖去做比對,然後有符合條件的pixel才輸出
可是以下會出現Scanline out of range, 問題是出在哪裡呢?是因為兩張圖大小不同Scanline不能這樣子設嗎?

另外我想問因我想做圖型辨識, 若此一比對雖然可以比對到我要的圖形, 但在鄰近Pixel也會出現重複比對成功, 這我一直想不到有什麼方法可以解決
還請各位高手協助, 感謝


[code cpp]
Byte *ptr1,*ptr2;
Graphics::TBitmap *TempBitmap1= new Graphics::TBitmap();
TempBitmap1->LoadFromFile("test1.bmp");
TempBitmap1->PixelFormat=pf24bit;
ImageWidth1=TempBitmap1->Width;
ImageHeight1=TempBitmap1->Height;
Image1->Picture->Bitmap->Assign(TempBitmap1);

int **Data2;
Data2 = new int*[ImageWidth1];
for(int i = 0; i < ImageWidth1; i )
Data2[i] = new int[ImageHeight1];

Graphics::TBitmap *TempBitmap2= new Graphics::TBitmap();
TempBitmap2->LoadFromFile("test2.bmp");
TempBitmap2->PixelFormat=pf24bit;
ImageWidth2=TempBitmap2->Width;
ImageHeight2=TempBitmap2->Height;

for(int y=0; y<(ImageHeight1-ImageHeight2);y )
{
for(int x=0; x<(ImageWidth1-ImageWidth2);x )
{
for(int j=0; j {
ptr1=(Byte*)TempBitmap1->ScanLine[j];
ptr2=(Byte*)TempBitmap2->ScanLine[j];
for(int i=0; i {
if(ptr1[i*3]>=155 && ptr2[i*3]!=0)
Data2[i][j]=1;
}
}
}
}
for(int j = 0; j < ImageWidth1;j )
{
ptr1=(Byte*)TempBitmap1->ScanLine[j];
for(int i = 0; i < ImageHeight1;i )
{
if(Data2[i][j]==0)
ptr1[i*3]=0;
ptr1[i*3 1]=0;
ptr1[i*3 2]=0;
}
[/code]
編輯記錄
guitarjong 重新編輯於 2013-07-22 15:18:18, 註解 無‧
guitarjong 重新編輯於 2013-07-22 15:27:42, 註解 無‧
guitarjong 重新編輯於 2013-07-22 15:30:32, 註解 無‧
系統時間:2024-03-29 14:46:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!