**HObject,unsigned char的相互转换**

一、unsigned char*转HObject
unsigned char* pFrameBuf;
HObject ho_Image;

1)单通道图像转换
GenImage1(&ho_Image,“byte“ , Width,Height,(Hlong)pFrameBuf);
2)三通道图像转换
GenImageInterleaved(&ho_Image,(Hlong)pFrameBuf,“rgb”, Width,Height, 0,“byte”,0,0,0,0,-1,0);
注意参数3 “rgb”,此参数为图像数据的存储格式,根据实际情况调整比如一些图像存储格式为“bgr”,那第3个参数就改为“bgr”。
如果图像有3个图像通道指针:
unsigned char* strR;
unsigned char* strG;
unsigned char* strB;
GenImage3(&ho_Image,“byte”, Width,Height,(Hlong)strR,(Hlong)strG,(Hlong)strB);

一、HObject转unsigned char
1)单通道图像
GetImagePointer1(ho_Image,&Pointer, &Type,& Width, &Height)
pFrameBuf=(unsigned char* )Pointer[0].L();
2)3通道图像
3通道图像转为一个图像指针

void rgb3_to_uchar1(HObject ho_Image,unsigned char*  pFrameBuf){HObject  ho_ImageAffineTrans, ho_ImageRed, ho_ImageGreen,ho_ImageInterleaved;HObject  ho_ImageBlue, ho_RegionGrid, ho_RegionMoved, ho_RegionClipped;HTuple  hv_PointerRed, hv_PointerGreen, hv_PointerBlue;HTuple  hv_Type, hv_Width, hv_Height, hv_HomMat2DIdentity;HTuple  hv_HomMat2DScale;HTuple  hv_Pointer, hv_TypeRGB;GetImagePointer3(ho_Image, &hv_PointerRed, &hv_PointerGreen, &hv_PointerBlue, &hv_Type, &hv_Width, &hv_Height);GenImageConst(&ho_ImageInterleaved, "byte", hv_Width*3, hv_Height);HomMat2dIdentity(&hv_HomMat2DIdentity);HomMat2dScale(hv_HomMat2DIdentity, 1, 3, 0, 0, &hv_HomMat2DScale);AffineTransImageSize(ho_Image, &ho_ImageAffineTrans, hv_HomMat2DScale, "constant", hv_Width*3, hv_Height);Decompose3(ho_ImageAffineTrans, &ho_ImageRed, &ho_ImageGreen, &ho_ImageBlue);GenGridRegion(&ho_RegionGrid, 2*hv_Height, 3, "lines", hv_Width*3, hv_Height+1);MoveRegion(ho_RegionGrid, &ho_RegionMoved, -1, 0);ClipRegion(ho_RegionMoved, &ho_RegionClipped, 0, 0, hv_Height-1, (3*hv_Width)-1);ReduceDomain(ho_ImageRed, ho_RegionClipped, &ho_ImageRed);MoveRegion(ho_RegionGrid, &ho_RegionMoved, -1, 1);ClipRegion(ho_RegionMoved, &ho_RegionClipped, 0, 0, hv_Height-1, (3*hv_Width)-1);ReduceDomain(ho_ImageGreen, ho_RegionClipped, &ho_ImageGreen);MoveRegion(ho_RegionGrid, &ho_RegionMoved, -1, 2);ClipRegion(ho_RegionMoved, &ho_RegionClipped, 0, 0, hv_Height-1, (3*hv_Width)-1);ReduceDomain(ho_ImageBlue, ho_RegionClipped, &ho_ImageBlue);OverpaintGray(ho_ImageInterleaved, ho_ImageRed);OverpaintGray(ho_ImageInterleaved, ho_ImageGreen);OverpaintGray(ho_ImageInterleaved, ho_ImageBlue);GetImagePointer1(ho_ImageInterleaved, &hv_Pointer, &hv_TypeRGB, &hv_Width, &hv_Height);//注意,此时ho_ImageInterleaved的宽度为实际图像宽度的3倍,所以在构造图像时使用的宽度和高度参数应该是hv_Width/3和hv_Height。pFrameBuf=(unsigned char*)hv_Pointer[0].L();
}

3通道图像转为三个图像指针

GetImagePointer3(ho_Image, PointerRed, PointerGreen, PointerBlue, Type, Width, Height);
unsigned char* strR=(unsigned char* )PointerRed[0].L();
unsigned char* strG=(unsigned char* )PointerGreen[0].L();
unsigned char* strB=(unsigned char* )PointerBlue[0].L();

HObject,unsigned char的相互转换相关推荐

  1. char, unsigned char, int,unsigned int之间的相互转换

    char, unsigned char, int,unsigned int之间的相互转换 2018年12月01日 23:45:21 _业精于勤_ 阅读数:667 标签: 数据转换 更多 个人分类: C ...

  2. C语言char *转数组,C语言char*字符串数组和unsigned char[]数组的相互转换

    #include #include using namespace std; void convertUnCharToStr(char* str, unsigned char* UnChar, int ...

  3. Linux环境下实现unsigned char*向string的转换

    代码 unsigned char input_data[input_data_length] = {"This is my first encrypted plaintext hello w ...

  4. string char* 16进制数字转化 unsigned char* 转化 字符串拼接

    项目中用到了16进制数字的转化 , 但是输出的是通过sha1加密,字符是两两转化为16进制数,要求是将其连接起来发送成一个字符串. 首先 要用到string时需要加载相关的头文件 #include & ...

  5. 打印不同对象的字节表示 ( 对int*强制转换成unsigned char*的理解 )

    此文章参考<深入理解计算机系统>P31. 先看如下代码:  12345的十六进制表示为:0x00003039 1 #include <stdio.h> 2 3 int main ...

  6. linux 下byte,char,unsigned char的区别

    在linux中,对byte的定义为无符号char,而char默认为有符号char. #ifndef BYTE #define BYTE unsigned char #endif 以下ZZ百度知道: 在 ...

  7. c# char unsigned_dll 中含有unsigned char数组,被C#调用 -

    public class OPVcDll { #region 对USB接口的使用(PHILIPH卡) [DllImport("dcrf32.dll")] public static ...

  8. 【错误记录】Android NDK 编译报错 ( no known conversion from ‘unsigned char *‘ to ‘const char *‘ )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Visual Studio 2019 中编译 Android NDK , 构建方式参考 [Android 逆向]Android 进程注入工具开发 ...

  9. 用unsigned char 表示字节

    在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同 ...

最新文章

  1. MVC匿名类传值学习
  2. python3 xpath_Python3使用Xpath解析网易云音乐歌手页面
  3. 使用AngularJS 进行Hybrid App 开发已经有一年多时间了,这里做一个总结
  4. 2020蓝桥杯省赛---java---B---8(数字三角形)
  5. App中如何实现消息推送
  6. 委托、Lambda表达式、事件系列06,使用Action实现观察者模式,体验委托和事件的区别...
  7. 腾讯云服务器公网ip无法访问
  8. 超级经典的与其他语言混合编程的批处理代码
  9. Linux | Shell脚本从入门到实战
  10. excel分列 excel按列分为多个工作簿或者excel文件
  11. 一生一代一双人:我与51CTO学院的情缘----写于51CTO学院2周年庆
  12. 【全开源+免费更新】doodoo.js快速入门教程
  13. 我的大学 --- 郭天祥【4】
  14. 1500+开发者直呼过瘾,这场Dubbo首秀引爆了朋友圈
  15. C语言/C++【switch语句详解(用法、规则、流程图、实例)】
  16. 2018最新精选的Go框架,库和软件的精选列表 二 https://awesome-go.com/
  17. 在 Visual Studio Code 中添加自定义的代码片段
  18. 搜狗输入法如何java_搜狗拼音输入法LINUX版安装
  19. Qt 在Excel文件中Chart绘图
  20. 酒店预定系统开发步骤_分享酒店预订系统小程序开发制作功能介绍

热门文章

  1. 研究云计算中调度算法遇到的相关概念
  2. 装饰模式--私人定制冬装夏装
  3. SQL Server 数据库修复专家SQLRescue
  4. jsp页面hidden的诡异
  5. 关于参加“兆易创新杯”第十三届中国研究生电子设计竞赛,国赛二等奖的总结(fishing_5)
  6. public protected private
  7. 营业收费管理系统,整合多类抄表系统
  8. Calander 的小程序 简单日历的制作
  9. 2018最佳计算机配置,2018年主流的组装电脑配置是什么样的?
  10. 2018 最新直播接口