java - 处理 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 存在相机问题。这似乎不是这里的问题。我能够让相机在其他草图中正常工作。
我将不胜感激任何反馈。谢谢。
解决方案
Java 9 中引入的模块系统对哪些模块可以使用其他模块的功能有更多的限制。有关更多信息,请参阅此问题和答案:什么是非法反射访问
您使用处理 4 是否有特定原因?目前只有 alpha 版本可用,所以如果可能,我会使用 Processing 3。当我尝试在处理 4 中运行您的代码时,我得到与您相同的错误。当我在处理 3.5.4(在 Ubuntu 上)中运行您的代码时,它运行没有任何问题并且面部识别正在工作。我建议尝试处理 3。
推荐阅读
- xamarin - Xamarin Live Player 不会一直加载共享库
- javascript - 通过 java 脚本创建 href 并添加 var
- cmd - CMD字符串变量多行输出,不加空格和回车
- asp.net-mvc - .NET Core:如何将 StreamReader 中的字符串输出为 XML
- python - 列表和任何名称中的差异名称(列表中的 s 中的名称)
- python - 计算大矩阵的均值和协方差(300000 x 70000)
- mongodb - 将 MongoDB 云与 AWS 自动缩放集成
- node.js - 将NodeJS流消耗到缓冲区并写入流的正确方法
- sapui5 - 来自 JSON 文件的聚合绑定 SAPUi5
- python - PyQt5 和 OpenCV 有类似的库;如何避免两者之间的冲突?