PS I:\18Breakageratecalculation\SVM run> & C:/Users/win10/AppData/Local/Programs/Python/Python311/python.exe "i:/18Breakageratecalculation/SVM run/svm-color" File "i:\18Breakageratecalculation\SVM run\svm-color", line 21 since = time.time() TabError: inconsistent use of tabs and spaces in indentation怎么改
时间: 2024-04-27 18:19:57 浏览: 116
这个错误是因为在代码的缩进中使用了制表符和空格混合的方式,而 Python 不允许这种情况。建议在编辑器中将制表符转换为空格,或者使用统一的缩进风格来避免这种错误。您可以按照以下步骤进行处理:
1. 打开 `i:\18Breakageratecalculation\SVM run\svm-color` 文件。
2. 定位到第 21 行代码。
3. 将所有的制表符(Tab)替换成空格。
4. 确认所有的缩进都是使用空格完成的。
5. 保存文件并重新运行程序。
如果您使用的是 VS Code 或 PyCharm 等编辑器,可以在编辑器中设置自动将制表符转换为空格或显示缩进符号,以避免这种错误。
相关问题
>>> import numpy as np >>> import cv2 >>> import matplotlib as plt >>> import os >>> import time >>> def save_imginfo_to_txt(filepath, txtpath): ... files = os.listdir(filepath) ... res = [] ... for file in files: ... filename = filepath + "I:\\18Breakageratecalculation\\SVM run\\pos" + file ... img = cv2.imread(filename) ... res.append([filename, 1, 0, 0, img.shape[0], img.shape[1]]) ... save_txt = txtpath + "I:\\18Breakageratecalculation\\SVM run\\pos" + "file_name.txt" ... file = open(save_txt, 'a') ... for i in res: ... file.write(' '.join([str(j) for j in i])) ... file.write("\n") ... file.close() ... >>> filepath = r"I:\18Breakageratecalculation\SVM run\pos\" File "<stdin>", line 1 filepath = r"I:\18Breakageratecalculation\SVM run\pos\" ^ SyntaxError: unterminated string literal (detected at line 1) >>> filepath = r"I:\18Breakageratecalculation\SVM run\pos" >>> txtpath = r"I:\18Breakageratecalculation\SVM run" >>> save_imginfo_to_txt(filepath, txtpath) [ WARN:0@385.483] imread_('I:\18Breakageratecalculation\SVM run\posI:\18Breakageratecalculation\SVM run\pos1.png'): can't open/read file: check file path/integrity Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 7, in save_imginfo_to_txt AttributeError: 'NoneType' object has no attribute 'shape'
在你的代码中,有几个错误需要修正。
首先,在定义 `filepath` 时,你使用了反斜杠 `\` 来转义字符,但是最后一个反斜杠没有被转义,因此需要在字符串前加上 `r` 来表示 raw string,或者在最后一个反斜杠后面再加上一个反斜杠。
其次,在调用 `cv2.imread` 时,你传递的文件名是 `filename`,但是其中包含了 `filepath`,因此实际上会读取到 `filepath + filename`,导致文件路径错误。你需要将 `filename` 中的 `filepath` 去掉,只保留文件名。
最后,在处理图片时,如果读取失败,`cv2.imread` 会返回 `None`,因此需要加上判断。如果读取成功,才能获取其形状。
下面是修改后的代码:
```
import numpy as np
import cv2
import matplotlib as plt
import os
import time
def save_imginfo_to_txt(filepath, txtpath):
files = os.listdir(filepath)
res = []
for file in files:
filename = filepath + "\\" + file
img = cv2.imread(filename)
if img is not None:
res.append([filename, 1, 0, 0, img.shape[0], img.shape[1]])
save_txt = txtpath + "\\" + "file_name.txt"
file = open(save_txt, 'a')
for i in res:
file.write(' '.join([str(j) for j in i]))
file.write("\n")
file.close()
filepath = r"I:\18Breakageratecalculation\SVM run\pos"
txtpath = r"I:\18Breakageratecalculation\SVM run"
save_imginfo_to_txt(filepath, txtpath)
```
请注意,这里的代码只是修正了语法错误,并不能保证程序的正确性,你需要根据你的需求进一步修改。
>>> args = {"image": 'I:\\18Breakageratecalculation\\SVM run\\images\\001.jpg\\'} >>> image = cv2.imread(args["image"]) [ WARN:0@10.864] global loadsave.cpp:244 cv::findDecoder imread_('I:\18Breakageratecalculation\SVM run\images\001.jpg\'): can't open/read file: check file path/integrity >>> args = {"image": 'I:\18Breakageratecalculation\SVM run\images\001.jpg'}
根据您提供的代码,第一行中的 "image" 参数值似乎存在问题。它在结尾处有一个额外的反斜杠,这可能会导致 OpenCV 在读取图像时无法找到正确的文件路径。这是由于 Windows 操作系统使用反斜杠作为路径分隔符,而在 Python 字符串中反斜杠通常用作转义字符。
因此,您需要将路径中的反斜杠进行转义,或者使用原始字符串来避免这种情况。您第二行代码中的路径似乎已经进行了修正。您可以尝试下面的代码:
```
args = {"image": 'I:\\18Breakageratecalculation\\SVM run\\images\\001.jpg'}
image = cv2.imread(args["image"])
```
这应该可以成功读取图像文件。
阅读全文