如何在放avi的時候擷取每次影像的一列RGB值 |
尚未結案
|
517
一般會員 發表:1 回覆:0 積分:0 註冊:2003-10-23 發送簡訊給我 |
各位大大 我在form上面放置了一個panel來撥放avi檔 除此以外撥放的同時 如果是單步撥放的話 會把影像每次單步撥放的影像,做處理後放置到image上面,現在有一個問題是 我要用scanline去掃描每一次單步撥放時 影像中一列的RGB值
比如說320*240的影像 我現在只要在水平掃描線上120那列的RGB值 來做處理 但是我執行結果總覺得取RGB的方式有錯 希望各位能給我指教阿
void __fastcall TForm1::MdPlayerClick(TObject *Sender, TMPBtnType Button, bool &DoDefault) { Graphics::TBitmap *Bitmap1; TCanvas *MyCanvas; HDC dc; TRect rect; UpdataTrackBar(); int r,g,b; Byte *ptr1; if((Button = btBack)||(Button = btStep)) { try { Bitmap1 = new Graphics::TBitmap ; MyCanvas =new TCanvas ; TRect MyRect; MyRect = Rect(0,0,240,320); rect = MdPlayer->DisplayRect ; dc = GetDC(Panel1->Handle); MyCanvas->Handle = dc; Bitmap1->Width = 320 ; Bitmap1->Height = 240 ; Bitmap1->Canvas->CopyRect(rect,MyCanvas,rect); name1 = Path "-temp" ".bmp"; Form1->Image1->Canvas->Draw(0,0,Bitmap1); Image1->Picture->SaveToFile(name1); Bitmap1->LoadFromFile(name1); Image1->Picture->LoadFromFile(name1); int y=120; ptr=(byte*)Bitmap1->ScanLine[y]; for(int x=0;x<=320;x ) { ptr[3*x]=*(ptr 3*x);//分別讀取當j=120時,在不同i列時的R,G,B值. ptr[3*x 2]=*(ptr 3*x 2); ptr[3*x 1]=*(ptr 3*x 1); r=ptr[3*x]; g=ptr[3*x 1]; b=ptr[3*x 2]; //上述取出那一列rgb值的方法 是否正確呢 謝謝 R1[x]=r; G1[x]=g; B1[x]=b; } }發表人 - 517 於 2003/10/23 17:00:45 |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
517您好:
請參考下面的聯結做適當的修改
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=39009
謝謝您的配合
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
517您好:
若您要取的第120列的RGB值請參考下面的code
Graphics::TBitmap* BMP=new Graphics::TBitmap(); BMP->LoadFromFile("0.bmp"); Byte* ptr; ptr=(Byte*)BMP->ScanLine[120]; for (int x=0;x順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |