RGB888转RGB565使用C代码来实现是非常简单的,但就是比较耗时,使用NEON很容易实现这个功能,而且速度还能有很大的提升,以下是将16个RGB888像素点转为RGB565的代码

    uint8x16x3_t v = vld3q_u8(rgb);uint8x16_t r5 = vshrq_n_u8(v.val[0], 3);uint8x16_t g6 = vshrq_n_u8(v.val[1], 2);uint8x16_t b5 = vshrq_n_u8(v.val[2], 3);uint16x8_t temp = vshll_n_u8(vget_low_u8(r5), 8);uint16x8_t r5_l = vqshlq_n_u16(temp, 3);uint16x8_t g6_l = vshll_n_u8(vget_low_u8(g6), 5);uint16x8_t b5_l = vmovl_u8(vget_low_u8(b5));uint16x8_t rg56_l = vorrq_u16(r5_l, g6_l);uint16x8_t rgb565_l = vorrq_u16(rg56_l, b5_l);vst1q_u16(rgb565, rgb565_l);temp = vshll_n_u8(vget_high_u8(r5), 8);uint16x8_t r5_h = vqshlq_n_u16(temp, 3);uint16x8_t g6_h = vshll_n_u8(vget_high_u8(g6), 5);uint16x8_t b5_h = vmovl_u8(vget_high_u8(b5));uint16x8_t rg56_h = vorrq_u16(r5_h, g6_h);uint16x8_t rgb565_h = vorrq_u16(rg56_h, b5_h);vst1q_u16(rgb565 + 8, rgb565_h);

在实现了这段代码后,编译的时候遇到了如下的报错:

error:constant 11 out of range 0 - 8

编译器并没有能正确的指出错误的是哪一行代码,后来发现是将R右移11位的操作

vshll_n_u8(vget_low_u8(r5), 11);

以上写法会导致这个error,即右移的最大范围是8,而这里要右移11。

所以这里拆成了两次移位来实现右移11位。

NEON的右移位数是由限制的

使用neon实现RGB888转RGB565相关推荐

  1. RGB888转RGB565

    今天在REVIEW代码的时候,发现了这样一个宏定义: #define COLOR_TO_MTK_COLOR_SIMUL(color) ((((color) >> 19) & 0x1 ...

  2. RGB888 和 RGB565

    今天作练习,是一个将RGB888的图像转换成RGB565在ARM 的 LCD上显示的小程序.里面的移位来移位去的完全不了.先是不管三七二是一,把程序运行了一下.图像是一行一行刷出来的,点是一个一个一行 ...

  3. RGB888和RGB565屏幕显示效果区别

    很想测试一下RGB888和RGB565屏幕的显示区别 用image2lcd把图片转换一下, 屏幕分辨率为800x480 1 以下是对比: 左边RGB888 右边RGB565

  4. RGB888与RGB565颜色

    颜色名称 RGB888原色 RGB565还原色 英 RGB888[Hex] RGB888_R[Hex] RGB888_G[Hex] RGB888_B[Hex] RGB565[Hex] RGB565_R ...

  5. RGB565颜色表,附RGB888转RGB565工具,RGB24转RGB565工具

    下载链接   http://download.csdn.net/detail/liquanfeng9227/9893117 工具可以将RGB888颜色值转换成TFT屏用的RGB565颜色值. #def ...

  6. matlab读取RGB888或RGB565像素文件并绘图

    1.matlab下,通过读取txt文件中的RGB888格式的像素文件绘图,并将其转换为RGB565格式后再绘图.代码如下: clear all; close all; a=textread('E:\m ...

  7. RGB565 与 RGB888的相互转换

    本文内容不是完全原创,参考了网上部分精华,做了整理. RGB色彩模式(也翻译为"红绿蓝",比较少用)是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B) 三个颜色通道的变化 ...

  8. RGB565,RGB555, RGB888,RGB32转换

    关于RGB565,RGB555, RGB888,RGB32的转换,在我的前一篇博文中我已经介绍过了关于RGB565->RGB888的步骤和思想.    今天上午又研究了一个上午,就谢了下来,希望 ...

  9. 转: RGB565、RGB888互相转换原理和代码

    转:http://www.xuebuyuan.com/935987.html 背景:在我们的计算机中图像是以RGB888格式显示图像的,24位图每个像素保存了32bit的数据,即RGB888+Alph ...

最新文章

  1. python爬虫高考成绩
  2. 基于 Laravel Route 的 ThinkSNS+ Component
  3. 【Web后端笔记】SQL Server与java数据类型对应
  4. 初识vue之axios的封装
  5. Machine Learning学习计划
  6. IDC机房对接阿里云
  7. 【Ian Goodfellow 强推】GAN 进展跟踪 10 大论文(附下载)
  8. HTML Text Editor
  9. C语言获取当前的工作路径
  10. 云南农职《JavaScript交互式网页设计》 综合机试试卷④——蔚蓝网导航栏
  11. 计算机仿真塞曼效应实验报告,塞曼效应实验报告[完整版].doc
  12. Java集合类ArrayList线程不安全验证和解决
  13. 107 THREE.JS 使用StereoEffect实现模拟VR双屏
  14. AI不思议|除了猜用户手绘图案,还能猜什么?
  15. 【转贴】龙芯生态产品和解决方案巡展(第四篇)——存储
  16. matlab外推法求区间
  17. android 点赞手型,在朋友圈,你是哪种点赞型人格?
  18. 计算机网络具备哪些要素,一个计算机网络必须具备以下3个基本要素
  19. 每个初学JAVA者都应该搞懂的问题
  20. SAP HR Schema 详解(三)工资核算基础

热门文章

  1. 虚幻引擎5 C++编程学习
  2. 08 Cesium—影像服务-1
  3. jeesite集群和负载均衡配置
  4. 推箱子android课程设计,推箱子游戏课程设计精选.doc
  5. ffmpeg源码简析(九)av_log(),AVClass,AVOption
  6. TCP/IP协议族之运输层协议 ( UDP, TCP)
  7. 计算机串行总线控制器,通用串行总线控制器出现叹号是什么情况?怎么解决?...
  8. 3Com Network Supervisor与IBM Tivoli NetView两款网管软件操作视频
  9. 看盘做短线的10种方法(转)
  10. Spring Cloud 2.x系列之Feign整合断路器监控Hystrix Dashboard