首页 > 解决方案 > 处理 4 错误:警告:gab.opencv.OpenCV 的非法反射访问

问题描述

我正在尝试在带有 Catalina 的 MAC 上使用 OpenCV 和 Processing 4。但是,我收到以下错误:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by gab.opencv.OpenCV (file:/Users/mmemmo/Documents/Processing/libraries/opencv_processing/library/opencv_processing.jar) to field java.lang.ClassLoader.sys_paths

当我运行这段代码时

import gab.opencv.*;
import processing.video.*;
import java.awt.*;

Capture video;
OpenCV opencv;

void setup() {
  size(640, 480);
  video = new Capture(this, 640/2, 480/2);
  opencv = new OpenCV(this, 640/2, 480/2);
  //CASCADE_EYE
  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);  
 // opencv.loadCascade(OpenCV.CASCADE_EYE);  

  video.start();
}

void draw() {
  scale(2);
  opencv.loadImage(video);

  image(video, 0, 0 );

  noFill();
  stroke(0, 255, 0);
  strokeWeight(3);
  Rectangle[] faces = opencv.detect();
  println(faces.length);

  for (int i = 0; i < faces.length; i++) {
    println(faces[i].x + "," + faces[i].y);
    rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height);
  }
  
  if(faces.length > 0 ){
    println("Hello Human");enter code here
  }
}

void captureEvent(Capture c) {
  c.read();
}

我知道 Processing 与 Catalina 存在相机问题。这似乎不是这里的问题。我能够让相机在其他草图中正常工作。

我将不胜感激任何反馈。谢谢。

标签: javaopencvprocessingface-recognition

解决方案


Java 9 中引入的模块系统对哪些模块可以使用其他模块的功能有更多的限制。有关更多信息,请参阅此问题和答案:什么是非法反射访问

您使用处理 4 是否有特定原因?目前只有 alpha 版本可用,所以如果可能,我会使用 Processing 3。当我尝试在处理 4 中运行您的代码时,我得到与您相同的错误。当我在处理 3.5.4(在 Ubuntu 上)中运行您的代码时,它运行没有任何问题并且面部识别正在工作。我建议尝试处理 3。


推荐阅读