【发布时间】:2015-02-05 11:03:20
【问题描述】:
我正在从 PNG 中读取 bufferedImages,并使用 PixelGrabber 将它们转换为 int 数组。那么我的问题是:如何使用整数数组来制作相应的 OpenCV Mat?其中数组是一维的,每个值代表一个像素的组合 RGB 值。
我已经尝试过使用字节数组。
【问题讨论】:
-
组合RGB值是什么意思?
-
什么是“组合RGB”?您的意思是 int 的第一个字节是您的 R 值,第二个 G 和第三个字节是 B 值?最后一个字节的随机值是什么?您可以将每个 int 读取为 32 位 RGBA 值。
-
@Micka 从 pixelGrabber 读取像素时发生的任何事情,我都不完全确定存储在 int 中的数据。我所知道的是要获得红色 (rgbvalue >> 16) & 0xff;绿色 (rgbvalue >> 8) & 0xff;蓝色是 rgbvalue & 0xff;这有帮助吗?
-
不幸的是,这对于 opencv 来说不是最优的,所以你必须转换你的数据......稍后我会给出一些代码。基本上您可以: 将数据加载为 BGRA。拆分渠道并重新解释渠道:B=>waste; G=>R; R=>G; A=>B 除非 ppencv 中存在 ARGB 颜色类型,否则它会更容易更快...
-
啊好吧...不像我预期的那样,顺序是相反的,这很好。我会给你 C++ 代码,它应该对 java 工作非常相似
标签: java arrays image opencv bufferedimage