MATLAB не удаляет временные изображения

У меня есть программа анализа изображений в MATLAB, которая захватывает изображения с аппаратного фрейм-граббера. Сохраняет их во временную папку (%TEMP%\yymmdd-hhmmss\ в Windows), анализирует их, затем пытается их удалить. Но операция удаления всегда завершается с ошибкой "Файл используется другим процессом". Очевидно, в MATLAB они все еще открыты.

Я не могу найти открытые ручки, используя fopen('all'), я использую imread читать изображения - это все еще сохраняет открытую ручку где-нибудь? И если так, как я могу закрыть это?

2 ответа

Решение

Я немного покопался в этом. Оказалось, что файл изображения был заблокирован функцией MATLAB GetFileTime, которую я использовал для установки времени модификации изображения после захвата. Я не уверен, почему он блокирует файл, но я нашел другой метод для установки времени файла, который не приводит к блокировке файла.

(Спасибо @excaza за то, что заставили меня лучше разобраться в этом. Это был конец дня, и я не мог разобраться, поэтому я просто написал здесь. Очень ленивый из меня!)

Если fclose('all') или же pack не работают для вас, убедитесь, что никакие другие программы (например, антивирус) не пытаются сканировать временный каталог. Для моих приложений создание подпапки в моем рабочем каталоге позволило избежать проблем с доступом.

Другие вопросы по тегам