[MFC] 数据转换:Hobject转Bitmap

简介: [MFC] 数据转换:Hobject转Bitmap

以相机采集图像为例


一、如果采集到的图像是灰度的,则:

//采集灰度图像
      GrabImageAsync(&ho_Image, hv_AcqHandle, -1);
    //获取图像单通道指针hv_Pointer
    GetImagePointer1(GrayImag,&hv_Pointer,&hv_Type,&hv_Width1,&hv_Height1);
    //获取图片大小
    //将halcon类型的控制变量强制转换
    Width = (Hlong)hv_Width1;
    Height = (Hlong)hv_Height1;
    //专门放灰度的指针
    p = (BYTE *)hv_Pointer[0].L();
    if(m_kong)
    {
      //pt = new BYTE(Width*Height);
      //因为是灰度图,一个像素占一个字节
      //为这个指针装halcon图像的单通道指针动态分配内存空间
      pImage = new BYTE[Width*Height];
      //将bool类型变量置为零,不让其一直申请内存空间
      m_kong = FALSE; 
    }
    //将数据转到分配好空间的指针 pImage中
    memcpy(pImage,p,Width*Height*sizeof(BYTE));
    //变量转换完成,开始显示
    //位图信息头
    //给信息头指针分配内存空间
    bmpinf = (BITMAPINFO*)Buf;
    //初始化BITMAPINFO结构,此结构在保存bmp文件,显示采集图像时使用
    bmpinf->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    bmpinf->bmiHeader.biWidth = Width;
    bmpinf->bmiHeader.biHeight = -Height;  //正负可以上下翻转图像
    bmpinf->bmiHeader.biBitCount = 8;   //每个像素占8位
    bmpinf->bmiHeader.biCompression = BI_RGB;
    bmpinf->bmiHeader.biSizeImage = 0;
    bmpinf->bmiHeader.biClrImportant = 0;
    bmpinf->bmiHeader.biClrUsed = 0;
    bmpinf->bmiHeader.biXPelsPerMeter = 0;
    bmpinf->bmiHeader.biYPelsPerMeter = 0;
    bmpinf->bmiHeader.biPlanes = 1;
    //位图颜色表:灰度图比rgb三通道图多个颜色表,它由256和结构体,第一个结构体都是0,以此类推
    for(int i = 0; i<256; i++)
    {
      bmpinf->bmiColors[i].rgbBlue=i;
      bmpinf->bmiColors[i].rgbRed=i;
      bmpinf->bmiColors[i].rgbGreen=i;
      //预留一般为零
      bmpinf->bmiColors[i].rgbReserved=0;
    }
    //显示部分
      CDC *pDC;
    CRect Vedio;
    pDC = GetDlgItem(IDC_DISPLAY_STATIC)->GetDC();
    GetDlgItem(IDC_DISPLAY_STATIC)->GetClientRect(Vedio);
    SetStretchBltMode(pDC->GetSafeHdc(),COLORONCOLOR);
    //显示函数
    StretchDIBits(pDC->GetSafeHdc(),
      Vedio.left,
      Vedio.top,
      Vedio.Width(),
      Vedio.Height(),
      0,
      0,
      Width,   //图像宽
      Height,  //图像高
      pImage,  //图像缓冲区
      bmpinf,  //BMP图像描述信息
      DIB_RGB_COLORS,
      SRCCOPY);
    GetDlgItem(IDC_DISPLAY_STATIC)->ReleaseDC(pDC);

二、如果采集到的图像是彩色的,则:

后续添加

目录
相关文章
halcon的灰度变换(图像增强)
halcon的灰度变换(图像增强)
931 1
halcon如何判断HObject/HTuple为空
halcon如何判断HObject/HTuple为空
2201 0
|
C# C++
创建目标类型对象在C#7.3中不可用,请使用9.0或更高的语言版本
创建目标类型对象在C#7.3中不可用,请使用9.0或更高的语言版本
2485 0
创建目标类型对象在C#7.3中不可用,请使用9.0或更高的语言版本
halcon算子模板匹配(一)基于形状的模板匹配
halcon算子模板匹配(一)基于形状的模板匹配
2999 0
|
机器学习/深度学习 存储 文字识别
Halcon解决方案指南(18)OCR--字符识别
第18章 光学字符识别_OCR OCR(Optical Character Recongnition)即我们通常意义上讲的光学字符识别。在HALCON中,OCR常被用来分割区域及读取识别图像中的字符含义。
8928 57
|
11月前
|
机器学习/深度学习 PyTorch TensorFlow
Jetson 学习笔记(五):pb转uff---pb转onnx转trt----pth转onnx转pb
这篇文章是关于如何在NVIDIA Jetson平台上使用TensorRT来优化和部署深度学习模型的详细教程,包括了从不同格式的模型转换到TensorRT引擎的构建和推理过程。
404 1
Jetson 学习笔记(五):pb转uff---pb转onnx转trt----pth转onnx转pb
|
11月前
|
机器学习/深度学习 人工智能 文字识别
ultralytics YOLO11 全新发布!(原理介绍+代码详见+结构框图)
本文详细介绍YOLO11,包括其全新特性、代码实现及结构框图,并提供如何使用NEU-DET数据集进行训练的指南。YOLO11在前代基础上引入了新功能和改进,如C3k2、C2PSA模块和更轻量级的分类检测头,显著提升了模型的性能和灵活性。文中还对比了YOLO11与YOLOv8的区别,并展示了训练过程和结果的可视化
17820 0
|
11月前
|
机器学习/深度学习 算法 PyTorch
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-7.0版本进行目标检测的完整流程,包括算法介绍、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。YOLOv5以其高精度、快速度和模型小尺寸在计算机视觉领域受到广泛应用。
5127 0
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
|
C# C++
halcon联合c#、WPF学习笔记一(WPF配置halcon)
halcon联合c#、WPF学习笔记一(WPF配置halcon)
1073 1
|
存储 人工智能 数据可视化
AI计算机视觉笔记二十一:PaddleOCR训练自定义数据集
在完成PaddleOCR环境搭建与测试后,本文档详细介绍如何训练自定义的车牌检测模型。首先,在`PaddleOCR`目录下创建`train_data`文件夹存放数据集,并下载并解压缩车牌数据集。接着,复制并修改配置文件`ch_det_mv3_db_v2.0.yml`以适应训练需求,包括设置模型存储目录、训练可视化选项及数据集路径。随后,下载预训练权重文件并放置于`pretrain_models`目录下,以便进行预测与训练。最后,通过指定命令行参数执行训练、断点续训、测试及导出推理模型等操作。
1120 3