[英]java.lang.IllegalStateException: Could not execute method for android:onClick when I run app
I get this error when I run the app运行应用程序时出现此错误
java.lang.IllegalStateException: Could not execute method for android:onClick java.lang.IllegalStateException:无法执行 android 的方法:onClick
the line of logcat error 56 is: logcat 错误 56 的行是:
tinyYolo = readNetFromDarknet(tinyYoloCfg, tinyYoloWeights);
This is my code这是我的代码
public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 {公共 class MainActivity 扩展 AppCompatActivity 实现 CameraBridgeViewBase.CvCameraViewListener2 {
CameraBridgeViewBase cameraBridgeViewBase;
BaseLoaderCallback baseLoaderCallback;
boolean startYolo = false;
boolean firstTimeYolo = false;
Net tinyYolo;
public void YOLO(View yolo){
if (startYolo == false){
startYolo = true;
if (firstTimeYolo == false){
firstTimeYolo = true;
String tinyYoloCfg = getExternalCacheDir() + "/dnns/yolov3-tiny.cfg" ;
String tinyYoloWeights = getExternalCacheDir() + "/dnns/yolov3-tiny.weights";
tinyYolo = readNetFromDarknet(tinyYoloCfg, tinyYoloWeights);
}
}
else{
startYolo = false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cameraBridgeViewBase = (JavaCameraView)findViewById(R.id.CameraView);
cameraBridgeViewBase.setVisibility(SurfaceView.VISIBLE);
cameraBridgeViewBase.setCvCameraViewListener(this);
//System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
baseLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
super.onManagerConnected(status);
switch(status){
case BaseLoaderCallback.SUCCESS:
cameraBridgeViewBase.enableView();
break;
default:
super.onManagerConnected(status);
break;
}
}
};
}
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
Mat frame = inputFrame.rgba();
if (startYolo == true) {
Imgproc.cvtColor(frame, frame, Imgproc.COLOR_RGBA2RGB);
Mat imageBlob = Dnn.blobFromImage(frame, 0.00392, new Size(416,416),new Scalar(0, 0, 0),/*swapRB*/false, /*crop*/false);
tinyYolo.setInput(imageBlob);
java.util.List<Mat> result = new java.util.ArrayList<Mat>(2);
List<String> outBlobNames = new java.util.ArrayList<>();
outBlobNames.add(0, "yolo_16");
outBlobNames.add(1, "yolo_23");
tinyYolo.forward(result,outBlobNames);
float confThreshold = 0.3f;
List<Integer> clsIds = new ArrayList<>();
List<Float> confs = new ArrayList<>();
List<Rect> rects = new ArrayList<>();
for (int i = 0; i < result.size(); ++i)
{
Mat level = result.get(i);
for (int j = 0; j < level.rows(); ++j)
{
Mat row = level.row(j);
Mat scores = row.colRange(5, level.cols());
Core.MinMaxLocResult mm = Core.minMaxLoc(scores);
float confidence = (float)mm.maxVal;
Point classIdPoint = mm.maxLoc;
if (confidence > confThreshold)
{
int centerX = (int)(row.get(0,0)[0] * frame.cols());
int centerY = (int)(row.get(0,1)[0] * frame.rows());
int width = (int)(row.get(0,2)[0] * frame.cols());
int height = (int)(row.get(0,3)[0] * frame.rows());
int left = centerX - width / 2;
int top = centerY - height / 2;
clsIds.add((int)classIdPoint.x);
confs.add((float)confidence);
rects.add(new Rect(left, top, width, height));
}
}
}
int ArrayLength = confs.size();
if (ArrayLength>=1) {
// Apply non-maximum suppression procedure.
float nmsThresh = 0.2f;
MatOfFloat confidences = new MatOfFloat(Converters.vector_float_to_Mat(confs));
Rect[] boxesArray = rects.toArray(new Rect[0]);
MatOfRect boxes = new MatOfRect(boxesArray);
MatOfInt indices = new MatOfInt();
Dnn.NMSBoxes(boxes, confidences, confThreshold, nmsThresh, indices);
// Draw result boxes:
int[] ind = indices.toArray();
for (int i = 0; i < ind.length; ++i) {
int idx = ind[i];
Rect box = boxesArray[idx];
int idGuy = clsIds.get(idx);
float conf = confs.get(idx);
List<String> cocoNames = Arrays.asList("a person", "a bicycle", "a motorbike", "an airplane", "a bus", "a train", "a truck", "a boat", "a traffic light", "a fire hydrant", "a stop sign", "a parking meter", "a car", "a bench", "a bird", "a cat", "a dog", "a horse", "a sheep", "a cow", "an elephant", "a bear", "a zebra", "a giraffe", "a backpack", "an umbrella", "a handbag", "a tie", "a suitcase", "a frisbee", "skis", "a snowboard", "a sports ball", "a kite", "a baseball bat", "a baseball glove", "a skateboard", "a surfboard", "a tennis racket", "a bottle", "a wine glass", "a cup", "a fork", "a knife", "a spoon", "a bowl", "a banana", "an apple", "a sandwich", "an orange", "broccoli", "a carrot", "a hot dog", "a pizza", "a doughnut", "a cake", "a chair", "a sofa", "a potted plant", "a bed", "a dining table", "a toilet", "a TV monitor", "a laptop", "a computer mouse", "a remote control", "a keyboard", "a cell phone", "a microwave", "an oven", "a toaster", "a sink", "a refrigerator", "a book", "a clock", "a vase", "a pair of scissors", "a teddy bear", "a hair drier", "a toothbrush");
int intConf = (int) (conf * 100);
Imgproc.putText(frame,cocoNames.get(idGuy) + " " + intConf + "%",box.tl(),Core.FONT_HERSHEY_SIMPLEX, 2, new Scalar(255,255,0),2);
Imgproc.rectangle(frame, box.tl(), box.br(), new Scalar(255, 0, 0), 2);
}
}
}
return frame;
}
@Override
public void onCameraViewStarted(int width, int height) {
if (startYolo == true){
String tinyYoloCfg = getExternalCacheDir() + "/dnns/yolov3-tiny.cfg" ;
String tinyYoloWeights = getExternalCacheDir() + "/dnns/yolov3-tiny.weights";
tinyYolo = readNetFromDarknet(tinyYoloCfg, tinyYoloWeights);
}
}
This is the logcat error message that I see:这是我看到的 logcat 错误消息:
java.lang.IllegalStateException: Could not execute method for android:onClick at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390) at android.view.View.performClick(View.java:4278) at android.view.View$PerformClick.run(View.java:17429) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5099) at Z93F725A07423FE1C889F448B33D21F4 java.lang.IllegalStateException: Could not execute method for android:onClick at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390) at android.view.View.performClick(View.java:4278) at android .view.View$PerformClick.run(View.java:17429) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os. Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5099) at Z93F725A07423FE1C889F448B33D21F4 6Z.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) at android.vi 6Z.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803 ) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method .invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) at android.vi ew.View.performClick(View.java:4278) at android.view.View$PerformClick.run(View.java:17429) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5099) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803) a ew.View.performClick(View.java:4278) at android.view.View$PerformClick.run(View.java:17429) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler .dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5099) at java.lang.reflect.Method.invokeNative( Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803) a t com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) at dalvik.system.NativeStart.main(Native Method) Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(3.4.5) /build/3_4_pack-android/opencv/modules/dnn/src/darknet/darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: null/dnns/yolov3-tiny.cfg in function 'cv::dnn::experimental_dnn_34_v11::Net cv::dnn::experimental_dnn_34_v11::readNetFromDarknet(const cv::String&, const cv::String&)' ] at org.opencv.dnn.Dnn.readNetFromDarknet_0(Native Method) at org.opencv.dnn.Dnn.readNetFromDarknet(Dnn.java:322) at com.example.project_1.MainActivity.YOLO(MainActivity.java:56)... 14 more t com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) at dalvik.system.NativeStart.main(Native Method) Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV (3.4.5)/build/3_4_pack-android/opencv/modules/dnn/src/darknet/darknet_importer.cpp:207:错误:(-212:解析错误)无法解析NetParameter文件:null/dnns/yolov3-tiny .cfg in function 'cv::dnn::experimental_dnn_34_v11::Net cv::dnn::experimental_dnn_34_v11::readNetFromDarknet(const cv::String&, const cv::String&)' ] at org.opencv.dnn.Dnn.readNetFromDarknet_0 (Native Method) at org.opencv.dnn.Dnn.readNetFromDarknet(Dnn.java:322) at com.example.project_1.MainActivity.YOLO(MainActivity.java:56)... 14 more
looks like your yolov3-tiny.cfg
file is smehow malformed.看起来您的yolov3-tiny.cfg
文件格式错误。 in your exception you can find Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(3.4.5) /build/3_4_pack-android/opencv/modules/dnn/src/darknet/darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: null/dnns/yolov3-tiny.cfg
在您的异常中,您可以找到Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(3.4.5) /build/3_4_pack-android/opencv/modules/dnn/src/darknet/darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: null/dnns/yolov3-tiny.cfg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.