兩張長寬大小不同的BMP檔作圖型比對該如何做呢? |
缺席
|
guitarjong
一般會員 發表:1 回覆:0 積分:0 註冊:2013-07-22 發送簡訊給我 |
我是想讓兩張不同大小的圖去做比對,然後有符合條件的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; } 編輯記錄
guitarjong 重新編輯於 2013-07-22 15:18:18, 註解 無‧
guitarjong 重新編輯於 2013-07-22 15:27:42, 註解 無‧ guitarjong 重新編輯於 2013-07-22 15:30:32, 註解 無‧ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |