有一vc写的动态库函数:int RecognizePlate(LPBYTE pImg,LPVEH veh);
其中 pImg参数描述:全帧或单场采集的彩色图像数据地址,图像数据按原始RGB格式存放,每个像素占3个字节,存放顺序为B,G,R.在描述图像的坐标系中,原点在图像的左上角,y轴方向向下为正。图像的长宽以像素为单位,为4的倍数。
现在假设我有要传入的图片:'c:\car.bmp',怎样才能将car.bmp转换成上诉的pImg传入呢??

解决方案 »

  1.   

    var
      pData,pTemp : LPBYTE;
      P     : PByteArray;
      bmp   : TBitmap;
      w,h,i : Integer;
    begin
      bmp:= TBitmap.Create;
      bmp.LoadFromFile('c:\car.bmp');
      bmp.PixelFormat := pf24bit;
      w := bmp.Width;
      h := bmp.height;  pData := AllocMem( w * h * 3 );// 宽以像素为单位,为4的倍数,不用补0了
      pTemp := pData;  for i := 0 to BitMap.Height -1 do
      begin
        P := BitMap.ScanLine[i];
        Move( p^, pTemp^, w * 3 ); 
        Inc( pTemp, w * 3 );
      end;
      
      //pData就是你要的pImg;
    end;