我知道编辑这个网站吗?

JavaCV 安装程序

什么是 JavaCV

由此可见,JavaCV 是最初用 C/C++ 编写的各种本机计算机视觉库的 Java 接口的集合。

该集合当前包括 OpenCV、FFmpeg、libdc1394、FlyCapture、libfreenect、librealsense、videoInput、ARToolKitPlus、Leptonica 和 Tesseract 等库的接口。

这些接口基于 Samuel Audet 开发的原始 JavaCPP 技术,该技术允许使用 C/C++ 头文件自动生成本机库的 Java 包装器的 JNI 代码。

更多信息请参见Bytedeco siteGithub

JavaCV 如何帮助 ImageJ

JavaCV 本身不包含任何可以在 ImageJ 中直接使用的插件。 然而,它提供的接口包含许多用于图像分析和操作的类和方法,可用于开发插件。 因此,JavaCV 可能主要是由插件开发人员需要的。

例如,使用JavaCV开发了FFmpeg_Video插件,该插件使用FFmpeg API来实现ImageJ中几乎任何格式的视频文件的导入/导出。 在PhotoBend插件中,OpenCV接口用于特定对象识别和跟踪,而FFmpeg允许使用视频文件作为分析图像序列的来源。

什么是 JavaCV 安装程序插件以及谁可能需要它

在使用第三方库时,开发人员始终需要确保所有依赖项都已足够,不会与软件的其他部分发生冲突。 由于JavaCV包含大量针对不同类型平台的接口和原生库, 不同的 ImageJ 插件同时使用 JavaCV 组件可能会导致所有不同的插件过度配置依赖项的问题, 以及不同版本的组件之间的不兼容。

为了解决这个问题,需要能够集中管理JavaCV组件的安装,而这正是JavaCV Installer插件的作用。

这是如何工作的

内部运作

使用 Apache Maven Artifact Resolver 库,安装程序查询中央 Maven 存储库,获取 JavaCV 的可用版本及其各个版本提供的接口。 用户或编程接口允许用户选择所需版本的 JavaCV 组件并将其安装在 ImageJ 中。

在安装过程中,安装程序会检查并解决可能发生的任何版本冲突。 对于依赖项(jar 文件)的最终安装,安装程序使用内置的 ImageJ 更新机制,需要在安装完成后重新启动 ImageJ。 另外,安装程序还会创建存储库的本地缓存,允许在 JavaCV 版本之间快速切换 (ImageJ安装中的“local-maven-repo”文件夹可以随时自由删除 - 安装程序将在需要时重新创建它)。

用户前端

可以使用插件的用户界面手动安装JavaCV:

Javacv installer ui

使用插件的宏或公共方法,开发人员可以自动检查所需的接口并在 ImageJ 中安装缺少的 JavaCV 依赖项。

例如,要从 JavaCV 1.5.10 静默安装 ffmpeg 和 opencv,可以运行以下宏:

IJ.run("Install JavaCV libraries", "version=1.5.10 select_installation_option=[Install missing] treat_selected_version_as_minimal_required ffmpeg opencv");

要实现需求依赖项的饮料安装,可以使用以下代码 (请注意,此方法的第一部分检查安装程序本身是否已安装,如果缺少,则将其安装在 ImageJ 中。):

boolean checkJavaCV(String version, boolean treatAsMinVer, String components) {

		String javaCVInstallCommand = "Install JavaCV libraries";
		Hashtable table = Menus.getCommands();
		String javaCVInstallClassName = (String) table.get(javaCVInstallCommand);
		if (javaCVInstallClassName == null) {
			int result = JOptionPane.showConfirmDialog(null,
					"<html><h2>JavaCV Installer not found.</h2>"
							+ "<br>Please install it from from JavaCVInstaller update site:"
							+ "<br>https://sites.imagej.net/JavaCVInstaller/"
							+ "<br>Do you whant it to be installed now for you?"
							+ "<br><i>you need to restart ImageJ after the install</i></html>",
					"JavaCV check", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
			if (result == JOptionPane.YES_OPTION) {
				net.imagej.updater.CommandLine updCmd = new net.imagej.updater.CommandLine(
						AppUtils.getBaseDirectory("ij.dir", CommandLine.class, "updater"), 80);
				updCmd.addOrEditUploadSite("JavaCVInstaller", "https://sites.imagej.net/JavaCVInstaller/", null, null,
						false);
				net.imagej.updater.CommandLine updCmd2 = new net.imagej.updater.CommandLine(
						AppUtils.getBaseDirectory("ij.dir", CommandLine.class, "updater"), 80);
				updCmd2.update(Arrays.asList("plugins/JavaCV_Installer/JavaCV_Installer.jar"));
				IJ.run("Refresh Menus");
				table = Menus.getCommands();
				javaCVInstallClassName = (String) table.get(javaCVInstallCommand);
				if (javaCVInstallClassName == null) {
					IJ.showMessage("JavaCV check",
							"Failed to install JavaCV Installer plugin.\nPlease install it manually.");
				}
			}
			return false;
		}

		String installerCommand = "version=" + version + " select_installation_option=[Install missing] "
				+ (treatAsMinVer ? "treat_selected_version_as_minimal_required " : "") + components;

		boolean saveRecorder = Recorder.record; // save state of the macro Recorder
		Recorder.record = false; // disable the macro Recorder to avoid the JavaCV installer plugin being
									// recorded instead of this plugin
		String saveMacroOptions = Macro.getOptions();
		IJ.run("Install JavaCV libraries", installerCommand);
		if (saveMacroOptions != null)
			Macro.setOptions(saveMacroOptions);
		Recorder.record = saveRecorder; // restore the state of the macro Recorder

		String result = Prefs.get("javacv.install_result", "");
		String launcherResult = Prefs.get("javacv.install_result_launcher", "");
		if (!(result.equalsIgnoreCase("success") && launcherResult.equalsIgnoreCase("success"))) {
			if (result.indexOf("restart") > -1 || launcherResult.indexOf("restart") > -1) {
				IJ.log("Please restart ImageJ to proceed with installation of necessary JavaCV libraries.");
				return false;
			} else {
				IJ.log("JavaCV installation failed. Trying to use JavaCV as is...");
				return true;
			}
		}
		return true;
	}

在斐济安装

手动安装插件:

  1. 使用更新站点管理器添加JavaCV安装程序更新站点https://sites.imagej.net/JavaCVInstaller
  2. 使用更新程序正常安装插件

对于自动安装,请参阅上述 checkJavaCV 方法的代码示例。

其他信息和支持

该插件在 imagej forum 中讨论