Halcon把8位图转换为24位图的方法

307 阅读1分钟

halcon源码如下

*8位图转24位图

*读取8位图
read_image (Image, 'D:/org_R1.jpg')
get_image_pointer1 (Image, Pointer, Type, Width, Height)

*生成24位图
gen_image3 (ImageRGB, 'byte', Width, Height, Pointer, Pointer, Pointer)

C++源码如下:

//图像属性
HObject ho_Image3;
HTuple hv_Pointer;
HTuple hv_Type;
HTuple hv_Width;
HTuple hv_Height;

//生成24位的图像文件
GetImagePointer1(ho_Image1, &hv_Pointer, &hv_Type, &hv_Width, &hv_Height);
GenImage3(&ho_Image3, "byte", hv_Width, hv_Height, hv_Pointer, hv_Pointer, hv_Pointer);

C源码如下:

void NewRGBImage(Hobject *new)
{
  unsigned char  red[768*525];
  unsigned char  green[768*525];
  unsigned char  blue[768*525];
  int            r,c;
  for (r=0; r<525; r++)
    for (c=0; c<768; c++)
    {
      red[r*768+c]   = c % 255;
      green[r*768+c] = (767 - c) % 255;
      blue[r*768+c]  = r % 255;
    }
    gen_image3(new,"byte",768,525,(Hlong)red,(long)green,(long)blue);
}

main()
{
  Hobject  rgb;
  open_window(0,0,768,525,0,"","",&WindowHandle);
  NewRGBImage(&rgb);
  disp_color(rgb,WindowHandle);
}