bug57520
一般會員
發表:7 回覆:2 積分:1 註冊:2004-04-26
發送簡訊給我
|
//--------------------------------------------------------------------------- #include
#pragma hdrstop
#include"ipl.h"
IplImage *ima,*imb;
#include "Unit1.h"
#include<math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Image2->Width=Image1->Width;
//Image2->Height=Image1->Height;
//Image2->Left=Image1->Left+Image1->Width+200;
int i,j,k,a[256][256][3];
if(OpenPictureDialog1->Execute())
{
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
for(i=0;i<256;i++)
for(j=0;j<256;j++)
{
a[i][j][0]=GetRValue(Image1->Canvas->Pixels[i][j]);
a[i][j][1]=GetGValue(Image1->Canvas->Pixels[i][j]);
a[i][j][2]=GetBValue(Image1->Canvas->Pixels[i][j]);
}
ima=iplCreateImageHeader( 3,0,IPL_DEPTH_8U,"RGB","RGB",IPL_DATA_ORDER_PIXEL,IPL_ORIGIN_TL,IPL_ALIGN_DWORD,512,512,NULL,NULL,NULL,NULL);
imb=iplCreateImageHeader( 1,0,IPL_DEPTH_8U,"GRAY","GRAY",IPL_DATA_ORDER_PIXEL,IPL_ORIGIN_TL,IPL_ALIGN_DWORD,512,512,NULL,NULL,NULL,NULL); iplAllocateImage(ima,0,0);
iplAllocateImage(imb,0,0); for(i=0;i<256;i++)
for(j=0;j<256;j++)
for(k=0;k<3;k++)
{
*(ima->imageData+(i*256*3+j*3+k))=a[i][j][k];
}
iplColorToGray(ima,imb); for(i=0;i<256;i++)
for(j=0;j<256;j++)
for(k=0;k<3;k++)
{
a[i][j][k]=*(imb->imageData+i*256*3+j*3+k);
}
for(i=0;i<256;i++)
for(j=0;j<256;j++)
{
Image2->Canvas->Pixels[i][j]=(TColor)RGB(a[i][j][0] ,a[i][j][1], a[i][j][2]);
}
}
}
//---------------------------------------------------------------------------
這個程式雖然可以跑~~但是跑出來的圖跟原圖卻不一樣大小(執行結果如圖)
不知道是iplCreateImageHeader有問題還是將資料存到陣列中有問題?
|
sew
一般會員
發表:2 回覆:54 積分:21 註冊:2003-08-25
發送簡訊給我
|
看起來您的圖是256*256
不過您在
ima=iplCreateImageHeader( 3,0,IPL_DEPTH_8U,"RGB","RGB",IPL_DATA_ORDER_PIXEL,IPL_ORIGIN_TL,IPL_ALIGN_DWORD,512,512,NULL,NULL,NULL,NULL);
似乎是宣告成512*512 加油!
------ 加油!
|
bug57520
一般會員
發表:7 回覆:2 積分:1 註冊:2004-04-26
發送簡訊給我
|
引言:
看起來您的圖是256*256
不過您在
ima=iplCreateImageHeader( 3,0,IPL_DEPTH_8U,"RGB","RGB",IPL_DATA_ORDER_PIXEL,IPL_ORIGIN_TL,IPL_ALIGN_DWORD,512,512,NULL,NULL,NULL,NULL);
似乎是宣告成512*512 加油!
設256 256會不夠放所以改成512應該是不會有問題的
|
taishyang
站務副站長
發表:377 回覆:5490 積分:4563 註冊:2002-10-08
發送簡訊給我
|
bug57520您好:
po程式碼的方式請參考版規說明煩請修改,謝謝您的配合
< href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47262">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47262
|