Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自动将文件传输到文件夹(OpenCV)_Python_Opencv_Path_File Transfer_Expanduser - Fatal编程技术网

Python 自动将文件传输到文件夹(OpenCV)

Python 自动将文件传输到文件夹(OpenCV),python,opencv,path,file-transfer,expanduser,Python,Opencv,Path,File Transfer,Expanduser,首先,以下是我的代码: import cv2 import os,errno from os.path import expanduser from datetime import datetime import glob import numpy as np ##################### Creating folder & subfolders ##################### b_temp_folder = 'b_temp' c_path = os.pat

首先,以下是我的代码:

import cv2
import os,errno
from os.path import expanduser
from datetime import datetime
import glob
import numpy as np

##################### Creating folder & subfolders #####################

b_temp_folder = 'b_temp'
c_path = os.path.join('C:\\', b_temp_folder)

try:
    c_dir = os.mkdir(c_path)
except OSError as e:
    if e.errno != errno.EEXIST:
        raise

now = datetime.now()

id_folder = now.strftime('%Y%m%d-%H%M%S-%f')
b_path = os.path.join('C:\\b_temp\\',id_folder)
b_dir = os.mkdir(b_path)


##################### Images processing #####################

for img in glob.glob('C:\\Users\\User\\Desktop\\Images\\*.tif'):
    cv_img = cv2.imread(img)
    cv_show = cv2.imshow('img',cv_img)
    cv2.waitKey(0)
在第一部分中,正在创建一些文件夹。首先在“C:\”中创建一个文件夹,然后在其中创建一个名为datetime的文件夹。每次执行代码时都会创建最后一个,因此它们是唯一的(按毫秒排序)

运行的
将一次显示所有图像

问题是:如何将每个图像发送到它的唯一文件夹?我的意思是,第一个图像到第一个唯一的文件夹,等等

按照逻辑,每次运行所有代码时都会创建文件夹(一次一个文件夹)。相反,在同一个实例中迭代所有图像。 我如何修改这个

另外,正如你所看到的,我在C驱动器中创建了这个临时文件夹。我的计划是让这段代码有点跨平台。我尝试了os.path.expanduser,但它似乎不起作用。根本没有创建文件夹。。。有人知道为什么吗


谢谢

我建议在for循环中创建文件夹。您将一次访问一个图像和一个文件夹(如果这是我从您的描述中理解的话)


更新代码。来自“img”路径的图像文件将存储在b_路径中。这对我很有效。

以下是我所做的。该代码创建一个主文件夹,在主文件夹中创建一个唯一的文件夹,并立即传输一个文件

import cv2
import os,errno
from os.path import expanduser
from datetime import datetime
import glob
import numpy as np
import shutil


print('\ncreating main folder (temp) - "b_temp" IN C: \n')

b_temp_folder = 'b_temp'
c_path = os.path.join('C:\\', b_temp_folder)

try:
    c_dir = os.mkdir(c_path)
except OSError as e:
    if e.errno != errno.EEXIST:
        raise

print('creating unique folder in main folder - "id_folder" IN "b_temp" \n')


now = datetime.now()

id_folder = now.strftime('%Y%m%d-%H%M%S-%f')
b_path = os.path.join('C:\\b_temp\\',id_folder)
b_dir = os.mkdir(b_path)


print('moving image to unique folder \n')


idx = 0
for img in glob.glob('C:\\Users\\User\\Desktop\\Images\\' + str(idx) + '*.tif'):
    cv_img = cv2.imread(img)
idx+=1

shutil.move(img, b_path)

现在,有人知道如何使所有代码更加跨平台吗?我将所有文件都放在C:\,但这似乎不是一个好的解决方案…

是的,创建的每个文件夹对应一个图像。但代码似乎不起作用。。。cv_show不是一个文件夹,只是一个显示图像的命令。仍然不起作用。我想我必须改变几乎所有的。。。也许解决办法是放置一个计数器,并立即生成一个映像,程序每次运行一个映像。之后,我将执行一个main调用代码,并在文件夹中有图像的情况下对其进行多次迭代..更新的代码。这个对我有用。请试一试,谢谢。信不信由你,它还是不起作用。没有图像正在传输。相反,我在我的代码中做了一些更改,它一次只处理一个图像(创建主文件夹-->创建唯一文件夹-->将图像移动到唯一文件夹)。在一次迭代中完成。我把它作为回答,看一看。。
import cv2
import os,errno
from os.path import expanduser
from datetime import datetime
import glob
import numpy as np
import shutil


print('\ncreating main folder (temp) - "b_temp" IN C: \n')

b_temp_folder = 'b_temp'
c_path = os.path.join('C:\\', b_temp_folder)

try:
    c_dir = os.mkdir(c_path)
except OSError as e:
    if e.errno != errno.EEXIST:
        raise

print('creating unique folder in main folder - "id_folder" IN "b_temp" \n')


now = datetime.now()

id_folder = now.strftime('%Y%m%d-%H%M%S-%f')
b_path = os.path.join('C:\\b_temp\\',id_folder)
b_dir = os.mkdir(b_path)


print('moving image to unique folder \n')


idx = 0
for img in glob.glob('C:\\Users\\User\\Desktop\\Images\\' + str(idx) + '*.tif'):
    cv_img = cv2.imread(img)
idx+=1

shutil.move(img, b_path)