Мне нужно немного обработать каждый необработанный кадр и отобразить его в окне предварительного просмотра.Вот код, который я использую (в 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-битный одноканальный байеровый канал.Я, вероятно, что-то упускаю, потому что просто выделение байтового буфера в мате CV_16UC1 и преобразование его в RGB не работаетКроме того, кажется, что результирующий кадр слишком темный даже для линейного цветового пространства.Буду признателен за любую помощь!