設定XY軸來擷取圖片的問題. |
答題得分者是:cmf
|
arnotsay
一般會員 發表:23 回覆:79 積分:20 註冊:2003-02-03 發送簡訊給我 |
我已經將原圖中要擷取的物體..的左上.左下.右上.右下..的XY 座標找到了..
我要把擷取出來的物體另存一張圖顯示在 Image2 上..
使得Image2 會比Image1小很多..
ex..Image1=320x240 Image2=30x20... 我寫了程式碼..不過run的結果Image2 還是跟Image1一樣大小...是我寫錯嗎? Graphics::TBitmap *pBitmap=new Graphics::TBitmap;
Graphics::TBitmap *pBitmap1=new Graphics::TBitmap; for ( y =23 ; y <216); y )
{
ptr1 = (Byte *)pBitmap->ScanLine[y];
ptr2 = (Byte *)pBitmap1->ScanLine[y];
for ( x = 157; x <150; x )
{
b1=ptr1[x*3];
g1=ptr1[x*3 1];
r1=ptr1[x*3 2]; show1=(0.299*r1 0.587*g1 0.114*b1); ptr2[x*3]=(Byte)show1;
ptr2[x*3 1]=(Byte)show1;
ptr2[x*3 2]=(Byte)show1;
}
}
Image2->Picture->Assign(pBitmap1);
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
Graphics::TBitmap *pBitmap=new Graphics::TBitmap;
Graphics::TBitmap *pBitmap1=new Graphics::TBitmap; pBitmap1->width =30;
pBitmap1->height=20;
int i,j;
i=0;
j=0; for ( y =23 ; y <53); y++)
{
ptr1 = (Byte *)pBitmap->ScanLine[y];
ptr2 = (Byte *)pBitmap1->ScanLine[i];
for ( x = 157; x <177; x++)
{
b1=ptr1[x*3];
g1=ptr1[x*3+1];
r1=ptr1[x*3+2]; show1=(0.299*r1+0.587*g1+0.114*b1); ptr2[j*3]=(Byte)show1;
ptr2[j*3+1]=(Byte)show1;
ptr2[j*3+2]=(Byte)show1;
j++;
} i++;
}
Image2->Picture->Assign(pBitmap1);
------
︿︿ |
arnotsay
一般會員 發表:23 回覆:79 積分:20 註冊:2003-02-03 發送簡訊給我 |
引言: Graphics::TBitmap *pBitmap=new Graphics::TBitmap; Graphics::TBitmap *pBitmap1=new Graphics::TBitmap; pBitmap1->width =30; pBitmap1->height=20; int i,j; i=0; j=0; for ( y =23 ; y <53); y ) { ptr1 = (Byte *)pBitmap->ScanLine[y]; ptr2 = (Byte *)pBitmap1->ScanLine[i]; for ( x = 157; x <177; x ) { b1=ptr1[x*3]; g1=ptr1[x*3 1]; r1=ptr1[x*3 2]; show1=(0.299*r1 0.587*g1 0.114*b1); ptr2[j*3]=(Byte)show1; ptr2[j*3 1]=(Byte)show1; ptr2[j*3 2]=(Byte)show1; j ; } i ; } Image2->Picture->Assign(pBitmap1);你好...請問是不是要加兩行?? pBitmap= Image1->Picture->Bitmap;這行我確定要加... pBitmap1= Image2->Picture->Bitmap;但是Image2原本沒有圖形..如果這樣寫 就會有錯誤...但是又不能不寫...不知有解決的方法嗎? |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
arnotsay
一般會員 發表:23 回覆:79 積分:20 註冊:2003-02-03 發送簡訊給我 |
引言: 上面你的寫法是這樣 Graphics::TBitmap *pBitmap=new Graphics::TBitmap; Graphics::TBitmap *pBitmap1=new Graphics::TBitmap; 不清楚你要的是什麼,可以說清楚一點嗎 ? 3QGraphics::TBitmap *pBitmap=new Graphics::TBitmap; pBitmap= Image1->Picture->Bitmap; 以上是放原圖...然後我要把裡面的一個物體割出來... 割出來的物體..我要以Image2來顯示... |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
Graphics::TBitmap *pBitmap= Image1->Picture->Bitmap;
Graphics::TBitmap *pBitmap1; Image2->Picture->Bitmap->width =30;
Image2->Picture->Bitmap->height=20;
pBitmap1=Image2->Picture->Bitmap; int i,j;
i=0;
j=0; for ( y =23 ; y <53); y++)
{
ptr1 = (Byte *)pBitmap->ScanLine[y];
ptr2 = (Byte *)pBitmap1->ScanLine[i];
for ( x = 157; x <177; x++)
{
b1=ptr1[x*3];
g1=ptr1[x*3+1];
r1=ptr1[x*3+2]; show1=(0.299*r1+0.587*g1+0.114*b1); ptr2[j*3]=(Byte)show1;
ptr2[j*3+1]=(Byte)show1;
ptr2[j*3+2]=(Byte)show1;
j++;
} i++;
}
------
︿︿ |
arnotsay
一般會員 發表:23 回覆:79 積分:20 註冊:2003-02-03 發送簡訊給我 |
引言: Graphics::TBitmap *pBitmap= Image1->Picture->Bitmap; Graphics::TBitmap *pBitmap1; Image2->Picture->Bitmap->width =30; Image2->Picture->Bitmap->height=20; pBitmap1=Image2->Picture->Bitmap;cmf...我又學到一招...謝謝你 我的程式已經能正常work....謝謝你..我會更努力的... |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
arnotsay:
引言: 我已經將原圖中要擷取的物體..的左上.左下.右上.右下..的XY 座標找到了.. 我要把擷取出來的物體另存一張圖顯示在 Image2 上..試試下面的Code Image2->Canvas->CopyRect(bmp->Canvas->ClipRect,Image1->Canvas,Rect(start.x,start.y,end.x,end.y)); 只需左上與右下兩點即可< >< > 順心 發表人 - taishyang 於 2003/03/09 20:39:53 |
arnotsay
一般會員 發表:23 回覆:79 積分:20 註冊:2003-02-03 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
arnotsay您好:
引言:我已經將原圖中要擷取的物體..的左上.左下.右上.右下..的XY 座標找到了.. 我要把擷取出來的物體另存一張圖顯示在 Image2 上..所以Image2->Canvas->CopyRect(bmp->Canvas->ClipRect,Image1->Canvas,Rect(start.x,start.y,end.x,end.y)); 只需左上與右下兩點即可 引言: 知道左上與右下..不就等於知道其他兩點嗎?所以這是當然的啊< >< > 順心 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |