如何在 C++ 中监视一个目录并读取该目录中的图像
Posted
技术标签:
【中文标题】如何在 C++ 中监视一个目录并读取该目录中的图像【英文标题】:How to monitor a directory and read image in this directory in C++ 【发布时间】:2015-04-22 21:01:26 【问题描述】:首先,我是 C++ 新手。我正在使用 Visual Studio 2010。我参与了一个包含相机的项目。相机将图像(位图)发送到我计算机中的特定文件夹位置。我想一致地监视目录。当在目录中获得一个新的位图图像时,我想处理这个图像。我要使用的代码始终监视目录并读取此目录中的最后一个位图图像。我可以用什么来实现它?你有什么建议?能写出源代码吗?感谢您的关注。
【问题讨论】:
你能告诉我们你的尝试吗? 我正在使用以下代码处理图像: frame = cvLoadImage("test17.bmp",CV_LOAD_IMAGE_GRAYSCALE);然而;我不想通过输入图像名称来读取图像。我想监视一个目录,当一个图像被添加到目录时,我想读取这个图像。它是否有助于您理解我尝试做的事情? 我认为它可能与这个问题重复:***.com/questions/61253/… 和这个问题:***.com/questions/931093/… 【参考方案1】:Windows ReadDirectoryChangesW API 可用于监视目录中添加的文件。但是,它非常先进,如果您不熟悉 C++ 和 Windows 编程,它可能超出您的能力范围。您将需要一些有经验的帮助。
【讨论】:
【参考方案2】:我不同意回答问题的其他人的观点,可以使用我在下面使用的一些共存库轻松完成,此代码可以满足您的需求,
string processName()
FILETIME bestDate = 0, 0 ;
FILETIME curDate;
string name;
CFileFind finder;
BOOL bWorking = finder.FindFile("*.png");
while (bWorking)
bWorking = finder.FindNextFile();
// date = (((ULONGLONG) finder.GetCreationTime(ft).dwHighDateTime) << 32) + finder.GetCreationTime(ft).dwLowDateTime;
finder.GetCreationTime(&curDate);
if (CompareFileTime(&curDate, &bestDate) > 0 )
bestDate = curDate;
name = finder.GetFileName().GetString();
// name = (LPCTSTR) finder.GetFileName();
return name;
这里是我为你写的代码,它取最后输入的 /.png 扩展名的名称,你可以在 libray 中查看它。
请告诉我更多问题
【讨论】:
以上是关于如何在 C++ 中监视一个目录并读取该目录中的图像的主要内容,如果未能解决你的问题,请参考以下文章