0

Wenn ich versuche, einen ImageReader vom Typ Tiefenpunktwolke zu erstellen, erhalte ich ein Null-Objekt.Erstellen eines ImageReader ohne Breite/Höhe

Der Grund dafür ist, dass ich Code aus Camera2Basic dafür angepasst habe und es die größte Ausgabegröße von der Stream-Konfiguration erhält. Das Problem ist, dass da es sich um eine Punktwolke handelt, keine sinnvolle Breite und Höhe ausgegeben werden muss. Daher gibt es null Breite und Höhe, in einem Null-Imagereader resultierende:

Size largest = Collections.max(
     Arrays.asList(map.getOutputSizes(ImageFormat.DEPTH_POINT_CLOUD)),//Returning null 
     new CompareSizesByArea()); 

mDMImageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(), ImageFormat.DEPTH_POINT_CLOUD, 2); 

Daraus ergibt sich die einzige Lösung, die ich kann wirklich sehen, ist, wenn es eine Möglichkeit, um eine Imagereader für eine Tiefe von Punktwolkenformat zu schaffen, leider kann ich Ich sehe einen Weg, dies zu tun, da es eine Breite und Höhe erfordert, die es offensichtlich nicht geben kann. Daher mein Problem.

Danke für jede Hilfe und Beratung, die Sie mir geben können.

Antwort

0

Wenn ich nicht falsch liege, kann man keinen ImageReader mit Null Breite und Höhe erstellen. Der Grund dafür ist, dass Sie, wie Sie in der documentation lesen können, die Werte, die Sie als Höhe und Breite einstellen, als Standardgröße für jedes Bild verwenden, das dieser ImageReader erzeugt.

Ich schlage vor, dass Sie Ihre Vorschau Breite und Höhe Werte (die Sie in irgendeiner Variable oder dynamisch an irgendeiner Stelle berechnet haben sollte), oder den größten Wert, den Ihr Gerät unterstützen kann. Sie können die Bildgrößen berechnen, die Ihr Kamera-Gerät unterstützt:

private static List<Size> getOutputSizes(CameraCharacteristics cameraCharacteristics, Object kind) { 
     //my kind value is ImageFormat.JPEG in this example 
      StreamConfigurationMap streamConfigurationMap = cameraCharacteristics 
      .get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); 
      if (streamConfigurationMap != null) { 
      Size[] availableResolutionsArray; 
      //The parameter is either an Integer (JPEG) or a class (MediaRecorder.class) 
      if (kind instanceof Integer) { 
       availableResolutionsArray = streamConfigurationMap.getOutputSizes((Integer) kind); 
      } else { 
       availableResolutionsArray = streamConfigurationMap.getOutputSizes((Class) kind); 
      } 
      List<Size> availableResolutions = Arrays.asList(availableResolutionsArray);  

      return availableResolutions; 
      } else { 
      return Collections.singletonList(new Size(DEFAULT_WIDHT, DEFAULT_HEIGHT)); 
      } 
     } 

hoffe, dass es Ihnen helfen wird!

Verwandte Themen