QT下实现YUV422与HImage互转(Ubunt + QT + halcon环境实现)

1、简介
     在工业相机做工件测量时,有时候需要把测量图像保存下来,以便日后查看对比。但是工业相机的存储容量小,为了
     减少图像的存储容量,以便可以存储更多图像,有时候需要把RGB的图像,压缩保存。压缩的格式有很多比如jpg、png
      、yuv等都是压缩图像的一种方式。但是jpg、和png这两种压缩方式是有损压缩。为了达到压缩的目的,又不使
     图像因为压缩失真,往往回采用yuv这个压缩方式,不仅可以减少容量还不会导致图像失真。

2、halcon中HImage的数据存储方式
      HImage的数据存储方式是先存放所有R通道、接着是所有G通道、最后是所有的B通道。
      RRRRRRRRRRRRRRRR...GGGGGGGGGGGGGGG...BBBBBBBBBBBBBBBBBB...

3、YUV422的数据存储方式
(1)、YUV的存储方式有两个,分别是planar和packed,分别表示连续存储和交叉存储。

(2)、planar方式:对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存所有像素点的U,随后是所有像素点的V。
      YYYYYYYYYYYYY...UUUUUUUUUUUUU...VVVVVVVVVVVV..

(3)、packed方式:对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。
      Y0U0Y1V0Y2U1Y3V1Y4U2Y5V2Y6U3Y7V3Y8U4Y9V4......

4、YUV422的压缩原理
      YUV422的压缩原理就是,把RGB三通道数据,压缩成YUV422两通道的数据,相当于减少了图像1/3的存储容量
       其中,图像的第1个像素(RGB)转成Y0和U0,图像的第2个像素(RGB)转成Y1和V0,图像的第3个像素(RGB)转成Y3和U1
      以此类推,最终整幅图像会转成Y0U0Y1V0Y2U1Y3V1Y4U2Y5V2Y6U3Y7V3Y8U4Y9V4......这样的YUV422数据用于存储。

注:我采用的YUV422只是其中一个方式,YUV的存放还有YUV444、YUV420等格式,每个格式只是YUV的排列不同而已。在此不对YUV做过多介绍。

5、YUV和RGB互相转换公式
(1)、RGB转YUV的公式如下:
       uchar Y = (uchar)(+0.2990 * R + 0.5870 * G + 0.1140 * B + 0  )
       uchar U = (uchar)(-0.1687 * R - 0.3313 * G + 0.5000 * B + 128)
       uchar V = (uchar)(+0.5000 * R - 0.4187 * G - 0.0813 * B + 128)
     
(2)、YUV转RGB公式如下:
      因为YUV的存储是相当于压缩了RGB的一个通道,所以2个Y和1个U、1个V可以还原成2个RGB像素

      举例:Y0U0Y1V0
      int ruv = (1 << 19) + 2130771 * V0;
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mark-puls

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值