--------------------------------------------------------------------------- error Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_5544\1055753196.py in <module> 17 # 训练K-近邻分类器 18 knn = cv2.ml.KNearest_create() ---> 19 knn.train(np.array(face_images), cv2.ml.ROW_SAMPLE, np.array(face_labels)) 20 21 # 读取测试图像 error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\ml\src\data.cpp:257: error: (-215:Assertion failed) samples.type() == CV_32F || samples.type() == CV_32S in function 'cv::ml::TrainDataImpl::setData'
时间: 2023-08-15 07:13:59 浏览: 255
这个错误提示是因为训练数据的数据类型不正确。在使用`cv2.ml.KNearest_create()`训练KNN分类器时,数据应该是单精度浮点型(`CV_32F`)或整型(`CV_32S`)。
你可以尝试将代码中的数据类型转换为单精度浮点型,如下所示:
```python
face_images = np.array(face_images, dtype=np.float32)
face_labels = np.array(face_labels, dtype=np.float32)
# 训练K-近邻分类器
knn = cv2.ml.KNearest_create()
knn.train(face_images, cv2.ml.ROW_SAMPLE, face_labels)
```
这样就可以解决这个错误。希望对你有帮助。
阅读全文