OpenCV学习——图像的BGR格式解读

  • 1. opencv读取的图片数据格式
  • 2. BGR含义

1. opencv读取的图片数据格式

opencv读取的图片数据格式为numpy的nparray格式。

一张二维图片是由像素点构成,如下图所示:
其中确定了像素点的位置,确定了颜色,通常为三通道RGB
举例:[125,225,3]
对应维度信息表示:
[图片高度,图片宽度,像素BGR值]
[数组行数,数组列数,像素BGR值]
[Height,Width,Channels]

Ps:opencv读取的图片数值为BGR格式,与PIL库读取图片得到的RGB格式不同,因此如果用其他库的imshow函数来显示图片,图片的颜色会发生变化

2. BGR含义

B:Blue
G:Green
R:Red
分别代表三原色,不同的颜色由不同的三原色配比得到。因此,在一张二维图片的像素点数组中,确定行与列后,还会获取该位置三原色的数值,用以表示颜色。
Ps:像素值大小[0,255]

我的理解:因为部分例如我熟悉的yolov5需要用到的就是BGR值。所以获取到的图片必须得转成RGB值传入才能进行识别。特别是从TextureView表面纹理获取到的图片,它不是nv21的byte[]格式,而是ARGB_8888的Bitmap。我们只需要将bitmap直接转换成BGR格式存储即可,不需要先将其转换成bmp->nv21->BGR,这中间多了一层。bmp->BGR.

在TextureView里面的onSurfaceTextureUpdated方法中,TextureView.getBitmap方法可用于获取包含当前帧的Bitmap对象,它的格式为 Bitmap.Config.ARGB_8888。然后将Bitmap对象传递给toBgr方法以获取BGR像素数据。此数据可以用于您的图像处理需求。以下为对应的bmp->BGR方法:

public static byte[] toBgr(Bitmap bitmap) {int width = bitmap.getWidth();int height = bitmap.getHeight();byte[] data = new byte[width * height * 3];int[] pixels = new int[width * height];bitmap.getPixels(pixels, 0, width, 0, 0, width, height);for (int i = 0; i < pixels.length; i++) {int pixel = pixels[i];int r = Color.red(pixel);int g = Color.green(pixel);int b = Color.blue(pixel);data[3 * i] = (byte) b;data[3 * i + 1] = (byte) g;data[3 * i + 2] = (byte) r;}return data;
}

获取到BGR格式保存的byte[]数组后,即可以直接使用于一些算法byte[]输入。这些当然是视不同的算法所需的格式而定。而我这边主要是yolov5需要到。

这篇文章引用了opencv获取图片的BGR的一些理解,主要为我个人理解以及深入学习使用。如有冒犯,还请联系我,我将相关内容删除

引用文章的链接:OpenCV学习(2)——图像的数据格式BGR_bgr图像_Run的博客-CSDN博客

算法学习-图像的数据格式BGR相关推荐

  1. OpenCV学习(2)——图像的数据格式BGR

    OpenCV学习(2)--图像的BGR格式解读 1. opencv读取的图片数据格式 2. BGR含义 1. opencv读取的图片数据格式 opencv读取的图片数据格式为numpy的nparray ...

  2. felzenszwalb算法_学习图像场景解析的理论和应用(二)场景解析的经典算法分析之SLIC...

    2003 年,任晓峰教授在图像分割技术层面上提出了超像素分割的这一概念,是指具有相似纹理.颜色.亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块.它利用像素之间特征的相似性将像素分组,用少量的超 ...

  3. 学习使用非局部平均值去噪算法去除图像中的噪音-图像去噪

    图像去噪 目标 • 学习使用非局部平均值去噪算法去除图像中的噪音 • 学习函数 cv2.fastNlMeansDenoising(),cv2.fastNlMeansDenoisingColored() ...

  4. Surf算法学习心得(一)——算法原理

    Surf算法学习心得(一)--算法原理 写在前面的话: Surf算法是对Sift算法的一种改进,主要是在算法的执行效率上,比Sift算法来讲运行更快!由于我也是初学者,刚刚才开始研究这个算法,然而网上 ...

  5. 【每周CV论文】初学深度学习图像风格化要读的文章

    欢迎来到<每周CV论文>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 图像风格化的研究由来以久,这是一个艺术和科学相结 ...

  6. 【每周CV论文】初学深度学习图像修复应该要读的文章

    欢迎来到<每周CV论文>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 图像修复(image inpainting)或补 ...

  7. 【每周CV论文】初学深度学习图像对比度增强应该要读的文章

    欢迎来到<每周CV论文>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 图像对比度增强,即增强图像中的有用信息,抑制无用 ...

  8. 【每周CV论文】初学深度学习图像超分辨应该要读的文章

    欢迎来到<每周CV论文>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 图像超分辨是一个非常实际应用价值的方向,今天给大 ...

  9. 【每周CV论文】深度学习图像降噪应该从阅读哪些文章开始

    欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 图像降噪是图像处理领域中非常传统和经典的问题 ...

最新文章

  1. 尚硅谷Java视频教程导航(学习路线图)
  2. caffe-win10-cifar10另
  3. 处理顶点——使用索引移除冗余顶点
  4. [NOTE] DSVW靶场练习笔记
  5. python和c有什么区别_c 跟 python的区别有哪些
  6. 转载:Windows CE内存管理
  7. mysql+字段+删除数据库表,MySQL命令行删除表中的一个字段
  8. CSS选择器的优先级计算
  9. 深信服智安全 SCSA---1
  10. mysql 并行操作_将MySQL去重操作优化到极致之三弹连发(二):多线程并行执行...
  11. 微信分享出错问题,MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid
  12. matlab信号处理小波变换
  13. 【一分钟了解UWP】微信UWP
  14. doris core安装报错Makefile:158: recipe for target 'processor.o' failed make: *** [processor.o] Error 1
  15. 鸿蒙os基带版本,华为推出基于鸿蒙OS的Hi3861开发板
  16. 高端蓝牙耳机哪个牌子好?四款高音质不错的蓝牙耳机推荐
  17. 【程序人生】这是 2017 关于程序员薪酬最详尽的调查报告
  18. iOS开发者续费流程
  19. itoa函数 和_itoa_s函数
  20. 使用NDWI提取水体详细流程

热门文章

  1. Oracle索引比表大
  2. 如何成为技术大神(文末有抽奖)
  3. 水下超声波测距c语言程序,超声波测距51C程序
  4. ncorrect Usage. flag provided but not defined: -rpc
  5. java修饰符面试题
  6. r7000p装linux双系统,联想拯救者 刃7000台式机设置u盘启动(支持uefi/bios双启动)
  7. 无延时直播/超低延时直播画面同步性测试(实测组图)
  8. FaceBoxes —— CPU上实时的人脸检测
  9. android 自动背光闪烁,Android 背光流程小结
  10. 美国探亲签证面签时一定要用英语吗?