Traceback (most recent call last): File "D:\pythonProject1\carI\caridentify4.py", line 554, in <module> r, roi, color = c.predict("../img/car1.jpg") File "D:\pythonProject1\carI\caridentify4.py", line 296, in predict image, contours, hierarchy = cv2.findContours(img_edge2, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) ValueError: not enough values to unpack (expected 3, got 2)
时间: 2024-01-29 15:03:52 浏览: 68
这个错误是因为 OpenCV 的版本问题导致的。在较新版本的 OpenCV 中,`findContours()` 函数只返回两个值,即图像轮廓和层次结构,而在较旧版本的 OpenCV 中,该函数返回三个值,包括图像轮廓、层次结构和轮廓类型。
你可以通过以下两种方式来解决这个问题:
1. 将 OpenCV 升级到较新的版本。在较新版本的 OpenCV 中,`findContours()` 函数只返回两个值,所以就不会出现上述错误。
2. 在调用 `findContours()` 函数时,只接收前两个返回值,忽略第三个返回值。例如,将代码中的以下行:
```
image, contours, hierarchy = cv2.findContours(img_edge2, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
```
修改为以下行:
```
contours, hierarchy = cv2.findContours(img_edge2, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
```
这样就可以忽略掉第三个返回值,避免出现上述错误。
相关问题
Traceback (most recent call last): File "D:\pythonProject1\carI\caridentify.py", line 553, in <module> c.train_svm() File "D:\pythonProject1\carI\caridentify.py", line 173, in train_svm self.model.load("svm.dat") File "D:\pythonProject1\carI\caridentify.py", line 128, in load self.model = self.model.load(fn) cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\ml\src\svm.cpp:2206: error: (-212:Parsing error) Missing or invalid SVM type in function 'cv::ml::SVMImpl::read_params' Exception ignored in: <function CardPredictor.__del__ at 0x0000023BCFF40700> Traceback (most recent call last): File "D:\pythonProject1\carI\caridentify.py", line 165, in __del__ File "D:\pythonProject1\carI\caridentify.py", line 224, in save_traindata File "D:\pythonProject1\carI\caridentify.py", line 131, in save cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\ml\src\svm.cpp:2121: error: (-212:Parsing error) SVM model data is invalid, check sv_count, var_* and class_count tags in function 'cv::ml::SVMImpl::write'
这个错误信息显示在加载 SVM 模型时出现了问题。错误信息中的“Missing or invalid SVM type”提示可能是由于 SVM 模型类型错误或缺失导致的。
你可以检查一下训练模型时使用的 SVM 类型是否与加载模型时使用的 SVM 类型一致。如果不一致,可以尝试重新训练一个正确类型的 SVM 模型。
此外,错误信息中还提到了一个“SVM model data is invalid”的错误,这可能是由于 SVM 模型数据格式错误或缺失导致的。你可以检查一下 SVM 模型数据的格式是否符合要求,并且确保模型数据文件存在且可读。
D:\python\python.exe D:\pythonProject1\carI\caridentify.py [ERROR:0@0.014] global persistence.cpp:505 cv::FileStorage::Impl::open Can't open file: 'svm.dat' in read mode Traceback (most recent call last): File "D:\pythonProject1\carI\caridentify.py", line 553, in <module> c.train_svm() File "D:\pythonProject1\carI\caridentify.py", line 173, in train_svm self.model.load("svm.dat") File "D:\pythonProject1\carI\caridentify.py", line 128, in load self.model = self.model.load(fn) cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\ml\src\svm.cpp:2206: error: (-212:Parsing error) Missing or invalid SVM type in function 'cv::ml::SVMImpl::read_params'
根据你提供的信息,看起来你运行的是一个车牌识别的程序,但是程序在加载 SVM 模型时出现了错误。错误信息显示无法在读取模式下打开文件“svm.dat”,这可能是由于文件不存在或无法访问。你需要确保文件存在且程序有权限访问它。如果文件确实存在但程序仍然无法打开它,则可能是由于文件格式不正确导致的错误。你可以检查程序中加载 SVM 模型的代码,确保使用正确的文件名和路径,并且文件格式正确无误。
阅读全文