【发布时间】:2019-03-04 15:45:34
【问题描述】:
我需要对每个原始帧进行一些处理并将其显示在预览中。这是我正在使用的代码(在 Kotlin 中):
fun Image.toLinearRgb(): Mat {
val bayer16Bit = Mat(height, width, CvType.CV_16UC1, planes[0].buffer)
val bayer8Bit = Mat().apply {
bayer16Bit.convertTo(this, CvType.CV_8UC1, 0.0625)
}
val rgb8Bit = Mat().apply {
Imgproc.cvtColor(bayer8Bit, this, Imgproc.COLOR_BayerGR2RGB)
}
bayer16Bit.release()
bayer8Bit.release()
return rgb8Bit
}
我最终得到了一个带有很多绿色像素的奇怪 rgb 帧。
根据文档,原始图像(通过 ImageFormat.RAW_SENSOR)是 16 位、单通道、bayered 的。我可能遗漏了一些东西,因为仅在 CV_16UC1 垫子中分配字节缓冲区并将其转换为 RGB 不起作用。此外,即使对于线性色彩空间,生成的帧似乎也太暗了。如有任何帮助,我将不胜感激!
【问题讨论】:
标签: android image-processing kotlin opencv3.0 opencv4android