Traceback (most recent call last): File "i:\18Breakageratecalculation\SVM run\hog-color-svm", line 17, in <module> hsv_image = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cv2.error: OpenCV(4.7.0) d:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.simd_helpers.hpp:92: error: (-2:Unspecified error) in function '__cdecl cv::impl::`anonymous-namespace'::CvtHelper<struct cv::impl::`anonymous namespace'::Set<3,4,-1>,struct cv::impl::A0x416a7d27::Set<3,-1,-1>,struct cv::impl::A0x416a7d27::Set<0,5,-1>,2>::CvtHelper(const class cv::_InputArray &,const class cv::_OutputArray &,int)'是什么问题
时间: 2023-08-03 18:09:04 浏览: 84
这个错误提示是在进行颜色空间转换时发生了错误,具体原因可能是以下几种情况之一:
输入的图像为空或者不存在,可以检查一下img是否成功读取。
输入的图像通道数不符合要求,比如在使用COLOR_BGR2HSV转换时,输入的图像应该是BGR三通道,而不是灰度图或者其他通道数的图像。
输入的图像像素值超出了颜色空间转换的范围,比如在转换到HSV颜色空间时,输入的BGR像素值应该在0~255范围内,如果像素值超出这个范围就会出现错误。
可以检查一下以上几个方面,看看哪一个可能导致了问题的发生。
相关问题
Traceback (most recent call last): File "i:\18Breakageratecalculation\SVM run\hog-color-svm", line 11, in <module> for i in range(num_samples = 681): ^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: range() takes no keyword arguments
在range()
函数中不能使用关键字参数来指定循环次数,因此抛出了TypeError: range() takes no keyword arguments
异常。你需要将num_samples = 681
这个赋值语句移到循环外面,然后使用range(num_samples)
来指定循环次数。例如,你可以这样修改代码:
import cv2
import numpy as np
# 提取图像的HOG特征
def get_hog_features(image):
hog = cv2.HOGDescriptor()
hog_features = hog.compute(image)
return hog_features
# 加载训练数据集
train_data = [r"I:\18Breakageratecalculation\SVM run\detection_cut\whole\train128"]
train_labels = [r"I:\18Breakageratecalculation\SVM run\detection_cut\whole\train128\labels.txt"]
num_samples = 681 # 定义循环次数
for i in range(num_samples):
image = cv2.imread('image_'+str(i)+'.jpg', 0)
hog_features = get_hog_features(image)
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
color_hist = cv2.calcHist([hsv_image], [0, 1], None, [180, 256], [0, 180, 0, 256])
color_features = cv2.normalize(color_hist, color_hist).flatten()
train_data.append(hog_features)
train_labels.append(labels[i])
# 训练SVM模型
svm = cv2.ml.SVM_create()
svm.setType(cv2.ml.SVM_C_SVC)
svm.setKernel(cv2.ml.SVM_LINEAR)
svm.train(np.array(train_data), cv2.ml.ROW_SAMPLE, np.array(train_labels))
# 对测试图像进行分类
test_image = cv2.imread('I:\18Breakageratecalculation\mask-slic use\maskSLIC-master\result\split\result2\maskslic2_roi.png', 0)
test_features = get_hog_features(test_image)
result = svm.predict(test_features.reshape(1,-1))
# 显示分割结果
result_image = np.zeros(test_image.shape, np.uint8)
for i in range(test_image.shape[0]):
for j in range(test_image.shape[1]):
if result[i,j] == 1:
result_image[i,j] = 255
cv2.imshow('I:\18Breakageratecalculation\mask-slic use\maskSLIC-master\result\split\result2\Result.png', result_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Traceback (most recent call last): File "i:\18Breakageratecalculation\SVM run\HOG_SVM-master\hog_color_self", line 16, in <module> from sklearn import joblib ImportError: cannot import name 'joblib' from 'sklearn' (C:\Users\win10\AppData\Local\Programs\Python\Python311\Lib\site-packages\sklearn\__init__.py)
这个错误提示是因为你的scikit-learn(sklearn)库中没有joblib
模块,可能是由于你的scikit-learn版本过低,或者没有正确安装。建议你先升级一下scikit-learn库,可以使用以下命令:
pip install -U scikit-learn
如果升级后仍然无法导入joblib
模块,可以尝试重新安装scikit-learn库,使用以下命令:
pip uninstall scikit-learn
pip install scikit-learn
如果你使用的是conda环境,可以使用以下命令升级或重新安装:
conda update scikit-learn
conda install scikit-learn
如果以上方法仍然无法解决问题,建议你检查一下Python环境和依赖库是否正确安装配置。
相关推荐















