携手创作,共同成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第 4 天 点击查看活动详情
欢迎关注我的公众号 [极智视界],获取我的更多笔记分享
大家好,我是极智视界,本文介绍一下 C++ 拖拽形式读取图像文件方法。
这里介绍的方法主要是为了便于用 C++ 编写一些 demo,我觉得还是比较实用的,展现形式就是:工程编译后生成一个 exe 可执行程序 => 双击 exe 生成 cmd 窗口(如下) (待输入状态) => 拖拽文件到 cmd 窗口即可自动读取文件路径进行处理 => 处理完一轮后再次进入待输入状态,如此循环交互。这样就形成了一个简单的交互式 demo 模版,既可以交互处理图像文件,也可以交互处理视频文件、文本文件等。下面来看看代码 (要用的话基本可以照搬就行,可以当做一个模版框架使用,读取后处理方式自定义就行了)。
1. C++ 拖拽形式读取图像文件
int main()
{
char file_name[1024];
char *filename;
again:
_flushall();
printf("\n Input filename:");
fgets(file_name, sizeof(file_name), stdin);
filename = &file_name[0];
if(strlen(file_name) && file_name[strlen(file_name) - 1] == '\n')
{
if(filename[0] == '"')
{
file_name[strlen(file_name) - 2] = 0;
filename++;
}
else
file_name[strlen(file_name) - 1] = 0;
}
// 开始处理图片数据
cv::Mat templ;
templ = imread(filename, 1);
if(templ.empty())
{
goto again;
}
// 自定义处理图片数据
...
...
...
goto again;
return 0;
}
2. C++ 拖拽形式读取视频文件
int main()
{
char file_name[1024];
char *filename;
again:
_flushall();
printf("\n Input filename:");
fgets(file_name, sizeof(file_name), stdin);
filename = &file_name[0];
if(strlen(file_name) && file_name[strlen(file_name) - 1] == '\n')
{
if(filename[0] == '"')
{
file_name[strlen(file_name) - 2] = 0;
filename++;
}
else
file_name[strlen(file_name) - 1] = 0;
}
// 开始处理视频数据
cv::VideoCapture cap(filename);
cv::Mat templ;
while(cap.isOpened())
{
cap >> templ;
if(templ.empty())
{
goto again;
}
// 自定义处理视频帧
}
...
...
...
goto again;
return 0;
}
好了,以上介绍了 C++ 拖拽形式读取图像文件方法,还是很实用的。希望我的分享能对你的学习有一点帮助。
【公众号传送】