PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'D:\\SW_demo\\image.png' -> 'D:\\SW_demo\\LR004.99-02.png'
时间: 2023-08-18 11:06:40 浏览: 243
这个错误通常表示在重命名文件时,目标文件已经被其他程序或进程打开或占用。这可能是因为您的代码在处理文件时没有正确关闭它们,导致文件仍然处于打开状态。
为了解决这个问题,您可以在处理完每个文件后,使用`cv2.destroyAllWindows()`关闭所有的OpenCV窗口,确保没有其他OpenCV窗口在使用这些文件。另外,您可能还需要在使用`cv2.imread`读取图像后,使用`cv2.imshow`显示图像,确保您没有忘记关闭显示的窗口。
以下是修改后的代码示例:
```python
import pytesseract
import cv2
import os
from PIL import Image
def get_image_paths(folder_path):
image_paths = []
for root, directories, files in os.walk(folder_path):
for file in files:
if file.endswith(".jpg") or file.endswith(".png"):
image_path = os.path.join(root, file)
image_paths.append(image_path)
return image_paths
folder_path = "D:\SW_demo"
old_paths = get_image_paths(folder_path)
pytesseract.pytesseract.tesseract_cmd = 'E:\\Tesseract-OCR\\tesseract.exe'
# 读取图像并处理
for old_path in old_paths:
image = cv2.imread(old_path)
# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 使用Tesseract进行文本识别
text = pytesseract.image_to_string(gray, lang='chi_sim')
keyword = "LR"
# 查找关键词后的文字
index = text.find(keyword)
if index != -1:
extracted_text = text[index + len(keyword):].strip()
words = extracted_text.split()
result = ' '.join(words[0:2]) # 只保留从第二个单词开始的部分
result = result.replace(" ", "")
new_name = keyword + result + '.png'
# 关闭OpenCV窗口
cv2.destroyAllWindows()
# 提取关键词后的文字extracted_text = extract_text_from_image(image_path, keyword)
print(new_name)
new_path = os.path.join(folder_path, new_name)
# 关闭图像文件
image.release()
# 重命名文件
os.rename(old_path, new_path)
```
请注意,我添加了`cv2.destroyAllWindows()`关闭所有OpenCV窗口的代码,并使用`image.release()`释放图像文件。这样可以确保在处理完一个图像后,关闭窗口并释放文件资源。
希望这可以解决您的问题!如有任何其他问题,请随时提问。
阅读全文