Szeneview mit Camerax, Modell geladen, aber nicht auf der Benutzeroberfläche gezeigtJava

Java-Forum
Anonymous
 Szeneview mit Camerax, Modell geladen, aber nicht auf der Benutzeroberfläche gezeigt

Post by Anonymous »

Die Modelle werden geladen, aber nicht gezeigt, wenn ich sie mit Kamera x verwende, und Erkennungen durch Tensorflow. Laden.

Code: Select all





< /code>

object ARModelViewer {
var preloadedModelNode: ModelNode? = null
@JvmStatic
fun preloadModel(sceneView: SceneView, activity: ComponentActivity) {
Log.d("ARModelViewer", "preloadModel() called")
activity.lifecycleScope.launch {
try {
val hdrFile = "environments/studio_small_09_2k.hdr"

sceneView.environmentLoader.loadHDREnvironment(hdrFile).apply {
sceneView.indirectLight = this?.indirectLight
sceneView.skybox = this?.skybox
}
Log.d("ARModelViewer", "Setting camera position")
sceneView.cameraNode.position = Position(z = 4.0f)

val modelFile = "arrow.glb"
Log.d("ARModelViewer", "Loading model file: $modelFile")
val modelInstance = sceneView.modelLoader.createModelInstance(modelFile)

Log.d("ARModelViewer", "Creating model node")
preloadedModelNode =
ModelNode(
modelInstance = modelInstance,
scaleToUnits = 2.0f,
)
preloadedModelNode!!.scale = Scale(0.5f)

Log.d("ARModelViewer", "Model node created and scaled")
// sceneView.addChildNode(preloadedModelNode!!)
} catch (e: Exception) {
Log.e("ARModelViewer", "Error in preloadModel: ${e.message}", e)
}
}
}

@JvmStatic
fun addChildModel(sceneView: SceneView) {
Log.d("ARModelViewer", "addChildModel() called")
if (preloadedModelNode != null) {
sceneView.addChildNode(preloadedModelNode!!)
Log.d("ARModelViewer", "Model node added to scene")
} else {
Log.w("ARModelViewer", "preloadedModelNode is null.  Did you call preloadModel() first?")
}
}
< /code>
   public void bindCameraUseCases() {
// real-time frame updates, frame-by-frame TensorFlow detection
if (cameraProvider == null) {
throw new IllegalStateException("Camera initialization failed.");
}

int rotation = binding.viewFinder.getDisplay().getRotation();

CameraSelector cameraSelector =
new CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_BACK)
.build();
// Preview Use Case
// Opens the camera
// Streams frames directly to the UI (typically a PreviewView)
// Does not give you access to the image data
preview =
new Preview.Builder()
.setTargetAspectRatio(AspectRatio.RATIO_4_3)
.setTargetRotation(rotation)
.build();

imageAnalyzer =
new ImageAnalysis.Builder()
.setTargetAspectRatio(AspectRatio.RATIO_4_3)
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.setTargetRotation(rotation)
.setOutputImageFormat(ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888)
.build();

// ImageAnalysis Use Case
// Gets image frames from the camera
// Lets you read and manipulate pixel data (ImageProxy)
// Analyze each frame and send it as a rotated/mirrored Bitmap
imageAnalyzer.setAnalyzer(
cameraExecutor,
imageProxy -> {
Bitmap bitmapBuffer =
Bitmap.createBitmap(
imageProxy.getWidth(),
imageProxy.getHeight(),
Bitmap.Config.ARGB_8888);
imageProxy.getPlanes()[0].getBuffer().rewind();
bitmapBuffer.copyPixelsFromBuffer(imageProxy.getPlanes()[0].getBuffer());
imageProxy.close();
Matrix matrix = new Matrix();
//// Rotate and optionally mirror the bitmap
matrix.postRotate((float) imageProxy.getImageInfo().getRotationDegrees());

if (isFrontCamera) {
matrix.postScale(-1f, 1f, imageProxy.getWidth(), imageProxy.getHeight());
}
// Apply transformation
Bitmap rotatedBitmap =
Bitmap.createBitmap(
bitmapBuffer,
0,
0,
bitmapBuffer.getWidth(),
bitmapBuffer.getHeight(),
matrix,
true);

// Dispatch to all listeners for TensorFlow Lite inference
if (rotatedBitmap != null) {
for (Listener listener : getListeners()) {
listener.detect(rotatedBitmap);
}
}
});

cameraProvider.unbindAll();
// Bind preview and image analysis to lifecycle
try {
camera =
cameraProvider.bindToLifecycle(
activity, cameraSelector, preview, imageAnalyzer);

preview.setSurfaceProvider(binding.viewFinder.getSurfaceProvider());
} catch (Exception exc) {
Log.e("OverlayView", "Use case binding failed", exc);
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post