我正在用OpenCV做人脸检测的应用程序。应用程序安装在手机里,但是由于致命的错误,它突然关闭了。这是我的主要活动。java
package com.example.oc2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraActivity;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Mat;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.JavaCameraView;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2{
JavaCameraView javaCameraView;
File cascfile;
CascadeClassifier facedetector;
private Mat mRgba,mGrey;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(!OpenCVLoader.initDebug())
{
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_4_0,this, baseCallback);
}
else
{
try {
baseCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
} catch (IOException e) {
e.printStackTrace();
}
}
javaCameraView.setCvCameraViewListener(this);
}
@Override
public void onCameraViewStarted(int width, int height) {
mRgba=new Mat();
mGrey=new Mat();
}
@Override
public void onCameraViewStopped() {
mGrey.release();
mRgba.release();
}
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mRgba=inputFrame.rgba();
mGrey=inputFrame.gray();
MatOfRect facedetection= new MatOfRect();
facedetector.detectMultiScale(mRgba,facedetection);
for(Rect rect: facedetection.toArray())
{
Imgproc.rectangle(mRgba,new Point(rect.x,rect.y),new Point(rect.x+rect.width,rect.y+rect.height),new Scalar(255,0,0));
}
return mRgba;
}
private final BaseLoaderCallback baseCallback=new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) throws IOException {
switch (status)
{
case LoaderCallbackInterface.SUCCESS:
{
InputStream is = getResources().openRawResource(R.raw.haarcascade_frontalface_alt2);
File cascadedir=getDir( "cascade" , Context.MODE_PRIVATE);
cascfile= new File(cascadedir, "haarcascade_frontalface_alt2.xml" );
FileOutputStream fos= new FileOutputStream(cascfile);
byte[] buffer=new byte[4096];
int bytesread;
while((bytesread = is.read(buffer))!=-1)
{
fos.write(buffer,0,bytesread);
}
is.close();
fos.close();
facedetector=new CascadeClassifier(cascfile.getAbsolutePath());
if(facedetector.empty())
{
facedetector=null;
}
else
{
cascadedir.delete();
}
javaCameraView.enableView();
}
break;
default:
{
super.onManagerConnected(status);
}
break;
}
}
};
}
这是我的错误,有人能帮忙吗?
如果有人能给出解决错误的步骤,这将是非常有帮助的。
再见,
我对你的代码有两种感觉:
1-在oncreate
活动中,缺少一行:
javaCameraView = (CameraBridgeViewBase) findViewById(R.id.java_camera_view);
因此,对此片段进行测试,但要想使其正常工作,您需要在启动应用程序[设置->apps->yourapp->permissions->camera
]之前启用应用程序的camera权限。权限部分必须重写正确,这只是为了快速测试
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
javaCameraView = (CameraBridgeViewBase) findViewById(R.id.java_camera_view);
// added for black screen
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "Permissions granted");
javaCameraView.setCameraPermissionGranted();
javaCameraView.setCameraIndex(CameraBridgeViewBase.CAMERA_ID_FRONT);
javaCameraView.setVisibility(CameraBridgeViewBase.VISIBLE);
javaCameraView.setCvCameraViewListener(this);
} else {
Log.d(TAG, "Troubles");
}
}
当我测试我的应用程序,我得到以下错误在Android StudioConsol: 我的密码是 家庭活动。JAVA 有人能帮忙吗?
我刚开始学习kotlin,我的第一个应用程序使用Retrifit2和Coroutine,但有问题。我有一些错误,但通过Coroutine,堆栈跟踪的信息非常少。也许有人会发现一个错误或知道hot使堆栈跟踪更有信息。 Apiservice:
本文向大家介绍使用OpenCV在Python中进行人脸和眼睛检测,包括了使用OpenCV在Python中进行人脸和眼睛检测的使用技巧和注意事项,需要的朋友参考一下 使用的模块: python-opencv(cv2) Opencv(Open source computer vision) 是一个python库,可帮助我们解决计算机视觉问题。 下载python-opencv(cv2) 通用方式:pip
我是Android的初学者。我正在开发一个应用程序。我收到这个问题,我不知道怎么做。 这是我在logcat中收到的信息:
请在这方面需要帮助。当我试图在模拟器上运行我的应用程序时,我的Logcat中出现了这些错误,我的UI崩溃了 logcat错误