java opencv 根据mat 获取RGB byte[]
时间: 2023-12-07 18:03:40 浏览: 110
您可以使用 OpenCV 提供的 `Mat` 类和 Java 提供的 `ByteBuffer` 类来获取 RGB 值的字节数组。
以下是一个示例代码:
```java
// 获取图片的宽度和高度
int width = mat.width();
int height = mat.height();
// 创建一个字节数组用于存储 RGB 值
byte[] rgbValues = new byte[width * height * 3];
// 获取图片的 RGB 像素值
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {
double[] pixel = mat.get(row, col);
// 将 BGR 转换为 RGB
rgbValues[(row * width + col) * 3] = (byte) pixel[2]; // R
rgbValues[(row * width + col) * 3 + 1] = (byte) pixel[1]; // G
rgbValues[(row * width + col) * 3 + 2] = (byte) pixel[0]; // B
}
}
// 将字节数组包装为 ByteBuffer
ByteBuffer buffer = ByteBuffer.wrap(rgbValues);
```
在上述代码中,我们首先获取 `Mat` 对象的宽度和高度。接着,我们创建一个字节数组用于存储 RGB 像素值,然后使用 `mat.get(row, col)` 方法获取每个像素点的 BGR 值,并将其转换为 RGB 值存储到字节数组中。最后,我们将字节数组包装为 `ByteBuffer` 类型的对象以便于读取。
阅读全文