我在Ubuntu 16.04中使用OpenCV 3.2来拼接机载扫描图像。我使用的示例软件接受图像作为命令行参数,因此为了将两个图像拼接在一起,我执行以下操作:
./main image1.jpg image2.jpg
我的问题是我总共要缝合96张图像。我是否需要单独输入这些图像,还是有办法将文件夹中包含的所有文件作为命令行输入到C ++程序?
我无法向Google提供合适的答案,所以我决定在这里问一下。
答案 0 :(得分:1)
您可以输入
来使用shell文件名扩展./main image*.jpg
image*.jpg
将由shell扩展为以“image”开头的所有jpeg文件,类似于ls image*.jpg
。
因此,如果您有96个名为imageXX.jpg
的文件,您的主程序将在命令行上接收所有96个文件。
答案 1 :(得分:1)
您可以使用此bash脚本
#!/bin/bash
dir_path=$1
if [ $# = 1 ]; then
if [ -d "${dir_path}" ] ; then
echo "$dir_path exists and is a directory";
else
echo "$dir_path is not a directory";
exit 1
fi
else
echo "Need one argument = directory";
exit 1
fi
echo "Process all files";
image_names=" ";
# concat all .jpg files in directory
FILES="$dir_path/*.jpg"
for f in $FILES
do
# echo "Processing $f file..."
image_names+=" $f"
done
echo "run ./main $image_names";
exec "./main $image_names";
将其另存为" runAllFiles.bash"在包含" ./ main"的目录中 然后在此目录中打开一个终端并编写命令行
bash runAllFiles.bash myfolder
在哪里" myfolder"是images.jpg
的文件夹路径