首页 > 解决方案 > 在 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);
    }
}

标签: javaopencvarguments

解决方案


Imgcodecs.imread接受包含完整路径或现有图像的相对路径的字符串。例如,在 Windows 下,图像的完整路径为C:\\myfolder\\myimage.jpg. 相对路径可以是 only myimage.jpg,但这假设程序是从可以找到图像的同一文件夹中执行的。

如果您尝试从 IDE 运行代码,也可以通过多种方式为其提供参数。您应该根据您使用的 IDE 进行研究。


推荐阅读