首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

水平垂直投影的問題解决思路

2012-03-27 
水平垂直投影的問題以下是我的原始codevoid __fastcall TForm1::ButtonClick(TObject *Sender){// ??水平

水平垂直投影的問題
以下是我的原始code

void __fastcall TForm1::ButtonClick(TObject *Sender)
{
  // ??水平与垂直方向的投影量


   
  long ProjectV[2000] = {0};
  long ProjectH[2000] = {0};
  long Vmax = 0, Hmax = 0;
  Byte *ptr;

  for(int row = 0; row < 1279; row++)
  {
  ptr = (Byte *)Image1->Picture->Bitmap->ScanLine[row];
  for(int col = 0; col < 1023; col++)
  {
  if(ptr[col*3] > 125) // 白?
  {
  ProjectV[col]++; // 垂直方向投影的?量+1
  ProjectH[row]++; // 水平方向投影的?量+1
  if(ProjectV[col] > Vmax) Vmax = ProjectV[col]; // ??垂直投影最大值
  if(ProjectH[row] > Hmax) Hmax = ProjectH[row]; // ??水平投影最大值
  }
  }
  }

  // ?出水平方向投影
  Image2->Canvas->Pen->Color = clWhite;
  for(int row = 0; row < 1279; row++)
  {
  Image2->Canvas->MoveTo(Image2->Width, row);
  Image2->Canvas->LineTo(Image2->Width * (1.0 - (double)ProjectH[row] / (double)Hmax), row);
  }

  // ?出垂直方向投影
  Image3->Canvas->Pen->Color = clWhite;
  for(int col = 0; col < 1023; col++)
  {
  Image3->Canvas->MoveTo(col, Image3->Height);
  Image3->Canvas->LineTo(col, Image3->Height * (1.0 - (double)ProjectV[col] / (double)Vmax));
  }
   
}

編譯無問題
為何執行時會出現以下訊息:

Acess violation address 00401CE8 in moudle 'Project.exe'.Read of address 017E001


[解决办法]
确定Bitmap的大小与格式是正确的。

热点排行