- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 Google ML Kit 和 CameraX API 制作实时图像分类器。我正在使用 CameraX API 的预览和分析。它给出错误为
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: Caused by: java.lang.IllegalStateException: Image is already closed
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at android.media.Image.throwISEIfImageIsInvalid(Image.java:68)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at android.media.ImageReader$SurfaceImage$SurfacePlane.getBuffer(ImageReader.java:832)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.common.internal.ImageConvertUtils.zza(com.google.mlkit:vision-common@@16.0.0:139)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.common.internal.ImageConvertUtils.convertToUpRightBitmap(com.google.mlkit:vision-common@@16.0.0:89)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.common.internal.ImageConvertUtils.getUpRightBitmap(com.google.mlkit:vision-common@@16.0.0:10)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.label.automl.internal.zzo.zza(com.google.mlkit:image-labeling-automl@@16.0.0:16)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.label.automl.internal.zzo.run(com.google.mlkit:image-labeling-automl@@16.0.0:60)
2020-07-27 01:17:18.145 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.common.internal.MobileVisionBase.zza(com.google.mlkit:vision-common@@16.0.0:23)
2020-07-27 01:17:18.146 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.vision.common.internal.zzb.call(com.google.mlkit:vision-common@@16.0.0)
2020-07-27 01:17:18.146 11009-11009/com.example.camerax_automl W/System.err: at com.google.mlkit.common.sdkinternal.ModelResource.zza(com.google.mlkit:common@@16.0.0:26)
2020-07-27 01:17:18.146 11009-11009/com.example.camerax_automl W/System.err: ... 9 more`
这里我使用了一个 TextureView 和一个 Textview 来显示分类结果。我还将 .tflite 模型放在 Assets 文件夹中并插入所需的依赖项。我的代码如下 -
public class MainActivity extends AppCompatActivity {
private int REQUEST_CODE_PERMISSIONS = 101;
private final String[] REQUIRED_PERMISSIONS = new String[]{"android.permission.CAMERA"};
TextureView textureView;
ImageButton imgbutton;
//LinearLayout linear1;
TextView text1;
//automal objects
AutoMLImageLabelerLocalModel localModel =
new AutoMLImageLabelerLocalModel.Builder()
.setAssetFilePath("model/manifest.json")
// or .setAbsoluteFilePath(absolute file path to manifest file)
.build();
AutoMLImageLabelerOptions autoMLImageLabelerOptions =
new AutoMLImageLabelerOptions.Builder(localModel)
.setConfidenceThreshold(0.0f) // Evaluate your model in the Firebase console
// to determine an appropriate value.
.build();
ImageLabeler labeler = ImageLabeling.getClient(autoMLImageLabelerOptions);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textureView = findViewById(R.id.view_finder);
imgbutton = findViewById(R.id.imgCapture);
text1 = findViewById(R.id.textView2);
if(allPermissionsGranted())
{
startCamera();
}
else
{
ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS);
}
}
private void startCamera() {
CameraX.unbindAll();
Rational aspectRatio = new Rational (textureView.getWidth(), textureView.getHeight());
Size screen = new Size(textureView.getWidth(), textureView.getHeight()); //size of the screen
PreviewConfig pConfig = new PreviewConfig.Builder()
.setTargetAspectRatio(aspectRatio)
.setTargetResolution(screen)
.build();
Preview preview = new Preview(pConfig);
preview.setOnPreviewOutputUpdateListener(new Preview.OnPreviewOutputUpdateListener() {
@Override
public void onUpdated(Preview.PreviewOutput output) {
ViewGroup parent = (ViewGroup) textureView.getParent();
parent.removeView(textureView);
parent.addView(textureView, 0);
textureView.setSurfaceTexture(output.getSurfaceTexture());
updateTransform();
}
});
ImageAnalysisConfig imconfig = new ImageAnalysisConfig.Builder().setTargetAspectRatio(aspectRatio)
.setTargetResolution(screen)
.setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE).build();
final ImageAnalysis analysis = new ImageAnalysis(imconfig);
analysis.setAnalyzer(new ImageAnalysis.Analyzer() {
@Override
public void analyze(ImageProxy image, int rotationDegrees) {
Image img = image.getImage();
if (image.getImage() == null) {
Log.d("Null", "Image is Null");
} else {
InputImage img1 = InputImage.fromMediaImage(img, rotationDegrees);
labeler.process(img1)
.addOnSuccessListener(new OnSuccessListener<List<ImageLabel>>() {
@Override
public void onSuccess(List<ImageLabel> labels) {
// Task completed successfully
for (ImageLabel label : labels) {
String text = label.getText();
float confidence = label.getConfidence();
int index = label.getIndex();
text1.setText(text + " " + confidence);
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
e.printStackTrace();
}
});
}
image.close();
}
});
CameraX.bindToLifecycle((LifecycleOwner)this,analysis, preview);
}
private void updateTransform() {
Matrix mx = new Matrix();
float w = textureView.getMeasuredWidth();
float h = textureView.getMeasuredHeight();
float cX = w / 2f;
float cY = h / 2f;
int rotationDgr;
int rotation = (int)textureView.getRotation();
switch(rotation){
case Surface.ROTATION_0:
rotationDgr = 0;
break;
case Surface.ROTATION_90:
rotationDgr = 90;
break;
case Surface.ROTATION_180:
rotationDgr = 180;
break;
case Surface.ROTATION_270:
rotationDgr = 270;
break;
default:
return;
}
mx.postRotate((float)rotationDgr, cX, cY);
textureView.setTransform(mx);
}
private boolean allPermissionsGranted(){
for(String permission:REQUIRED_PERMISSIONS) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
}
我做错了什么?
最佳答案
您不得在处理图像之前关闭图像。关闭图像会触发相机拍摄另一幅图像以供您的应用处理。
处理需要时间。不是即时的。
labeler.process(img1)
.addOnSuccessListener(new OnSuccessListener<List<ImageLabel>>() {
@Override
public void onSuccess(List<ImageLabel> labels) {
// Close the image
image.close();
...
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Close the image
image.close();
...
}
});
关于android - CameraX ML KIT 给出错误“java.lang.IllegalStateException : Image is already closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63105324/
我没有使用 Sprite Kit 的经验。我想知道是否有类似 Cocos2D 的东西 调度程序在 SpriteKit 中?如果不是,应该用什么 NSTimer 是唯一的选择吗?我想如果唯一的选择是使用
在我的 Sprite Kit 应用程序中,我想要一个粘性物理体:任何与该物体接触的动态物体都不会反弹,而是与其保持连接。 是否有任何属性可以执行这种粘性行为?如果不能,如何实现? 最佳答案 SKNod
在我的 Sprite Kit 应用程序中,我想要一个粘性物理体:任何与该物体接触的动态物体都不会反弹,而是与其保持连接。 是否有任何属性可以执行这种粘性行为?如果不能,如何实现? 最佳答案 SKNod
我正在构建一个 flappy bird 游戏,其中一半关卡在水上,另一半关卡在水下。 如果您的小鸟在空中,则存在规律的重力,当您轻敲时,会施加一个直线向上的冲量。 如果你的鸟在水中,重力应该在负方向(
我正在使用 Sprite 套件制作游戏,现在我想知道让对象“跳跃”的最佳方法是什么。所以它将以几个像素垂直启动。 这是我要跳转的对象的代码: SKSpriteNode *sprite = [SKSpr
我很好奇如何为我的游戏显示像素艺术。现在我只是将 SKScene 的大小调整为 sceneWithSize:CGSizeMake(256, 192) 这是正确的方法还是有更好的方法来进行这种排序任务?
我不知道如何阻止节点旋转。 为什么允许旋转没有禁用它? 这是我描述我的节点的方式: SKSpriteNode *badguy = [SKSpriteNode spriteNodeWithTexture
我在 Xcode 中使用 Sprite Kit,我想知道如何更改重力方向。默认重力方向为“X”,您可以在轴下方的图形上想象。如果我想更改为“Y”怎么办。 我的目标是给予物体坠落效果。它就像从高处坠落并
我想知道如何在屏幕外删除我的 SKNode 以帮助我的游戏运行更流畅。 如何在 Sprite Kit 上做到这一点 非常感谢 最佳答案 https://stackoverflow.com/a/2419
我有一个关于“WEBKIT”的问题。什么是 WebKit?什么是 Android WebKit 以及它与 IOS WEbKit 有何不同?如何使用 WebKit?想要完美清晰的答案。有人有什么想法吗?
在我的 Sprite 套件游戏中,当两个 Sprite 发生碰撞时,我使用 SKAction 播放 mp3 文件。虽然游戏运行良好,但我在第一次播放声音时注意到游戏中有一个小的“hickup”。整个游
我正在创建一个游戏,对于我的角色,他的腿和躯干有单独的动画,因此它们是具有单独物理体的单独节点。我在将躯干和腿连接在一起时遇到了很多麻烦,但是,将它们连接起来不是问题,让它们保持连接才是问题。在四处走
Sprite Kit 是否具有相当于 9 切片缩放的 Sprite ? 我试过谷歌搜索,但没有找到任何东西,但是......它通常是一个在不同框架中有不同名称的功能。所以我可能会错过它。 最佳答案 S
我正在 Sprite Kit 中制作“Achtung die kurve”克隆。对于不断移动的队伍/球员,我使用 CGMutablePathRef 和 SKShapeNode。在更新方法中我正在这样做
我正在尝试开发一个building information model iPad 的查看器,我面临着当前的挑战。我应该使用 SpriteKit 还是 SceneKit?我知道 SceneKit 是用来
在 iPhone ios10 上安装后,我的 ready to ship appstore 应用程序不再播放声音!帮助!使用 ios9,一切都完美运行 SKAction.playSoundFileNa
如何将 CIPixellate 核心图像过滤器添加到 Sprite Kit 场景中? 我有一个 SpriteKit 场景,它是 SKScene 或其子类。 我想在场景中添加一个核心图像过滤器。特别是
这似乎不是一个明智的问题,但我心中有一些困惑,我想澄清。在Apple的2d游戏框架Sprite kit中,通常建议将节点相关的数据存储在Plist中,然后在代码中需要时检索。我不明白的是,在使用 .s
这似乎不是一个明智的问题,但我心中有一些困惑,我想澄清。在Apple的2d游戏框架Sprite kit中,通常建议将节点相关的数据存储在Plist中,然后在代码中需要时检索。我不明白的是,在使用 .s
我试图让用户能够将 skspritenode 拖到 UIImageView 和 UIButton 上,但每当我创建场景时,它都会出现在 UI 元素后面。我该如何解决这个问题? 最佳答案 恐怕这是不可能
我是一名优秀的程序员,十分优秀!