Во всех прочитанных мною учебниках для использования OpenCV Camera
в Android
приложении упоминается, что:
override fun onCameraFrame(inputFrame: CameraBridgeViewBase.CvCameraViewFrame): Mat {
// retrieve the frame from `inputFrame`
// - the grayscale frame by imputFrame.gray()
// - the RGBA frame by inputFrame.rgba()
return inputFrame.rgba() // will show in the UI
}
Я пробовал оба imputFrame.gray()
и inputFrame.rgba()
, но получил ту же ошибкудля обоих случаев:
Unresolved reference rgba()
Если я попытался использовать только return inputFrame
, я получаю черный экран.
Я также попробовал следующее, но все еще получаю черный экран:
import org.opencv.android.CameraBridgeViewBase
import org.opencv.core.CvType.CV_8U
import org.opencv.core.Mat
import org.opencv.imgproc.Imgproc
class OpenCVCListner(context: Context) : CameraBridgeViewBase.CvCameraViewListener {
private var mRgba: Mat? = null
private var mGray: Mat? = null
override fun onCameraViewStarted(width: Int, height: Int) {
mGray = Mat()
mRgba = Mat()
}
override fun onCameraViewStopped() {
}
override fun onCameraFrame(inputFrame: Mat?): Mat {
inputFrame!!.convertTo(mRgba, CV_8U, 1.0, 0.0)
Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_BGRA2GRAY)
return mGray!!
}
}
В основной деятельности по вызову камеры я имею:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val ocvLoaded = OpenCVLoader.initDebug()
if (ocvLoaded) {
loadModel(this)
Toast.makeText(
this@MainActivity, "OpenCV loaded",
Toast.LENGTH_SHORT
).show()
opencv_jcv.apply {
setCvCameraViewListener(OpenCVCListner(this@MainActivity))
setCameraIndex(1)
enableView()
}
} else {
Toast.makeText(
this@MainActivity, "Unable to load OpenCV",
Toast.LENGTH_SHORT
).show()
Log.d("openCV", "loader: ${OpenCVLoader.initDebug()}")
}
}
}
И в моем макете я имею:
<org.opencv.android.JavaCameraView
android:id="@+id/opencv_jcv"
android:layout_width="343dp"
android:layout_height="378dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.498"
tools:layout_editor_absoluteX="34dp" />