File "/home/opencv/桌面/opencv/modules/java/generator/../generator/gen_java.py", line 1428, in <module> copy_java_files(java_files_dir, target_path) File "/home/opencv/桌面/opencv/modules/java/generator/../generator/gen_java.py", line 1251, in copy_java_files src = checkFileRemap(java_file) File "/home/opencv/桌面/opencv/modules/java/generator/../generator/gen_java.py", line 31, in checkFileRemap assert path[-3:] != '.in', path AssertionError: /home/opencv/桌面/opencv/modules/java/generator/src/java/org/opencv/osgi/OpenCVNativeLoader.java.in make[2]: *** [modules/java_bindings_generator/CMakeFiles/gen_opencv_java_source.dir/build.make:438:CMakeFiles/dephelper/gen_opencv_java_source] 错误 1 make[1]: *** [CMakeFiles/Makefile2:3343:modules/java_bindings_generator/CMakeFiles/gen_opencv_java_source.dir/all] 错误 2 make: *** [Makefile:166:all] 错误 2
时间: 2023-08-07 12:08:37 浏览: 68
这个错误似乎是在编译OpenCV时出现的问题。根据错误信息,看起来是在生成Java绑定源代码时出现了错误。
这个问题可能是由于某些文件路径的问题导致的。请尝试以下解决方法:
1. 确保你的OpenCV源代码路径中不包含特殊字符或非ASCII字符。将OpenCV源代码放在一个简单的路径下,例如`/home/opencv/opencv`。
2. 检查你的源代码是否完整且没有损坏。重新下载OpenCV源代码,并确保下载的文件没有损坏。
3. 清除之前的构建文件并重新构建。删除之前构建过程生成的所有文件和目录,然后重新运行CMake和make命令进行构建。
如果上述方法仍然无法解决问题,请尝试查看更详细的错误日志或报告,以获取更具体的错误信息。你还可以尝试在OpenCV的官方支持论坛或邮件列表上寻求帮助,那里有更多专业的开发者可以帮助你解决问题。
相关问题
Assertion failed (src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols) in Java_org_opencv_android_Utils_nMatToBitmap2, file /build/master_pack-android/opencv/modules/java/generator/src/cpp/utils.cpp, line 101 A/libc: Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x70078ea580 in tid 7578 (y.myapplication), pid 7578 (y.myapplication)
这个错误通常是因为在将 OpenCV 的 Mat 对象转换为 Android 中的 Bitmap 时出现了问题。请检查以下几点:
1. 确保传递给 `nMatToBitmap` 方法的 Mat 对象和 Bitmap 对象都不为空,且它们的大小和格式匹配。
2. 确保在调用 `nMatToBitmap` 方法之前,已经成功加载了 OpenCV 库并且进行了初始化。
3. 检查一下你的代码中是否有其他内存泄漏或线程安全问题,这可能会导致 SIGSEGV 信号的出现。
如果以上方法都没有解决问题,你可以尝试使用 OpenCV 提供的其他方法来进行 Mat 和 Bitmap 之间的转换,例如使用 `Imgcodecs.imread` 方法来加载图像,或者使用 `Utils.bitmapToMat` 方法将 Bitmap 转换为 Mat。
opencv编译 指定java
如果你想在编译OpenCV时指定Java的路径或版本,可以使用以下命令:
```
cmake -DBUILD_SHARED_LIBS=OFF -D BUILD_opencv_java=ON -D BUILD_opencv_java_bindings_generator=ON -D BUILD_opencv_java_examples=ON -DJAVA_HOME=/path/to/java/home ..
```
其中,`-DJAVA_HOME=/path/to/java/home`表示指定Java的安装路径。你需要将`/path/to/java/home`替换为你机器上Java的实际安装路径。例如,如果你使用的是Oracle JDK 8,那么Java的安装路径可能是`/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home`。
除了指定Java的路径,你还可以使用以下选项指定Java的版本:
```
-D JAVA_AWT_INCLUDE_PATH=/path/to/awt.h -D JAVA_AWT_LIBRARY=/path/to/libjawt.dylib -D JAVA_INCLUDE_PATH=/path/to/jni.h -D JAVA_INCLUDE_PATH2=/path/to/jni_md.h -D JAVA_JVM_LIBRARY=/path/to/libjvm.dylib
```
这些选项分别指定了Java AWT头文件路径、Java AWT库路径、Java JNI头文件路径、Java JNI_MD头文件路径和Java虚拟机库路径。你需要将这些路径替换为你机器上Java的实际路径。
需要注意的是,如果你使用的是Mac OS X 10.14或更高版本,那么你需要添加`-D WITH_COCOA=ON`选项,以启用Cocoa窗口系统。