java - 在 OpenCV 示例项目中将图像文件作为参数传递
问题描述
自从我使用 Java 以来已经有很长时间了,而且我以前从未使用过参数。所以我正在使用 OpenCV 模板匹配。我正在关注这个例子。如果您愿意,可以查看链接。我认为没有必要复制和过去整个事情。
当我运行项目时,它会打印;
Not enough parameters
Program arguments:
<image_name> <template_name> [<mask_name>]
所以程序至少需要两个参数:源图像文件和模板图像文件。但我不知道如何将文件传递给程序。它需要文件路径还是文件本身?
这是方法:
public void run(String[] args) {
if (args.length < 2) {
System.out.println("Not enough parameters");
System.out.println("Program arguments:\n<image_name> <template_name> [<mask_name>]");
System.exit(-1);
}
img = Imgcodecs.imread(args[0], Imgcodecs.IMREAD_COLOR);
templ = Imgcodecs.imread(args[1], Imgcodecs.IMREAD_COLOR);
if (args.length > 2) {
use_mask = true;
mask = Imgcodecs.imread(args[2], Imgcodecs.IMREAD_COLOR);
}
if (img.empty() || templ.empty() || (use_mask && mask.empty())) {
System.out.println("Can't read one of the images");
System.exit(-1);
}
matchingMethod();
createJFrame();
}
这是主要方法:
public class MatchTemplateDemo {
public static void main(String[] args) {
// load the native OpenCV library
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// run code
new MatchTemplateDemoRun().run(args);
}
}
解决方案
Imgcodecs.imread
接受包含完整路径或现有图像的相对路径的字符串。例如,在 Windows 下,图像的完整路径为C:\\myfolder\\myimage.jpg
. 相对路径可以是 only myimage.jpg
,但这假设程序是从可以找到图像的同一文件夹中执行的。
如果您尝试从 IDE 运行代码,也可以通过多种方式为其提供参数。您应该根据您使用的 IDE 进行研究。
推荐阅读
- spring - 为什么无法在 Spring MVC 中加载简单的应用程序?
- swift - 如何使用 XIB 制作自定义 MKAnnotationView
- java - 多态对象字符串
- javascript - WebPush PushSubscription 与messaging.getToken?
- java - 上三角矩阵的零空间
- python-2.7 - 在函数装饰器中使用 pytest 夹具
- javascript - 我可以在控制台日志中看到来自 action(redux) 的道具,但无法在窗口上访问。给出类型错误:无法读取未定义的道具“休息”
- python - 使用 namedtuple 变量创建一个新列表,并在模拟运行时对其进行迭代?
- c# - StackLayout 内的 StackLayout 创建溢出
- arrays - 在 init.d 中循环一个函数