opencv - 如果我需要访问底层数据,我应该为 Opencv 图像使用什么格式?
问题描述
我制作了一个使用 OpenCL 创建图像的程序,在 OpenCL 代码中我必须访问 opencv-image 的底层数据并直接修改它,但我不知道数据在内部是如何排列的。
我目前正在使用CV_8U
,因为表示非常简单 0 黑色 255 白色以及介于两者之间的所有内容,但我想添加颜色并且我不知道要使用什么格式。
这就是我目前修改图像的方式A[y*width + x] = 255;
。
解决方案
在 OpenCV 的情况下,像素的颜色值将排列B G R
在内存中。RGB 顺序会更常见,但 OpenCV 喜欢 BGR。
您的数据应该是CV_8UC3
,如果您使用imread
或就是这种情况VideoCapture
。如果不是这样,则需要对以下信息进行相应的解释。
您的数组索引数学需要扩展以考虑数据的布局:
[(y*width + x)*3 + channel]
3 因为 3 个频道。channel
如您所料,为 0..2,x 和 y。
推荐阅读
- cloudflare - cloudflare 默认会缓存东西吗?
- python-3.x - AttributeError:模块'tensorflow'没有属性'contrib'-python 3.8
- python - 两个 Excel 文件。如何使用python脚本将一个文件中的单词与另一个文件中的句子匹配
- java - 如何将kotlin中的.apply转换为java,我在java中根本找不到.apply
- react-native - 如何将计数器组件中的值传递给添加到购物车按钮
- kotlin - 如何将匿名函数传递给 map()?
- typo3 - TYPO3 10:未登录后端时禁用页面
- oracle - Oracle 从另一个电话垂直的表更新电话水平的表
- sql - 使用 hive 中的 spark 将数据推送到 mongoDB
- django - django 一对多多态(注释模型)