one = (r"C:\Users\Sam\OneDrive\Desktop\RateData\1")
for feature in features[0]:
backslash = '\\'
imagePath = ((one)+backslash+"'"+str(feature)+"'")
img = cv2.imread(imagePath)
print(imagePath)
print(img)
所以print(imagePath)
的结果是:
C:\Users\Sam\OneDrive\Desktop\RateData\1\'1.1.jpg'
print(img)
的结果是:None
feature
只是图像文件名。我这样写,所以它将唯一的图像文件名添加到路径中。
因此,我尝试通过cv2.imread()
函数运行该函数,它返回了None
。
我知道它不会运行的原因是它只是将其读取为字符串,并且无法识别为原始字符串文字。我不是一个非常有经验的程序员,所以我尝试了我能想到的所有方法(不是很多)来获取它作为原始字符串文字来读取路径,但是它不起作用。因此,如果你们中的任何一个可以帮助我将字符串做成那个,那就太棒了!
感谢您的帮助!
答案 0 :(得分:0)
因此,“ print(imagePath)”的结果是:C:\ Users \ Sam \ OneDrive \ Desktop \ RateData \ 1 \'1.1.jpg
几乎可以肯定,'1.1.jpg
目录中没有名为RateData
的文件。尽管Windows确实在文件名中允许使用单引号/单引号字符,但我无法想象您会故意在其中使用一个。因此,它可能命名为1.1.jpg
?
我也不确定您是如何从该代码中获得该字符串的……但是没关系。
您正在使这一切变得比原本困难得多。不必担心使路径分隔符转义并正确引用,或者您尝试执行的操作。
Python带有os.path
模块,用于执行与路径相关的操作。因此,只需使用它即可:
for feature in features[0]:
imagePath = os.path.join(one, str(feature))
img = cv2.imread(imagePath)
print(imagePath)
print(img)
或者,因为我敢打赌feature
已经是一个字符串,所以更简单:
imagePath = os.path.join(one, feature)
或者,如果您更喜欢面向对象的API,Python还附带了pathlib
:
one = pathlib.Path(one)
for feature in features[0]:
imagePath = one / feature
img = cv2.imread(str(imagePath))
print(imagePath)
print(img)
我不知道cv2
是否支持pathlib,但如果知道,您可以执行cv2.imread(imagePath)
。 (如果您想使用pathlib
,请一定尝试一下,因为它显然更具可读性。)