Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
支持向量机与c++; 我尝试用支持向量机进行C++的目标检测。我正在关注这一点。我面临一个问题,CvSVM目前还没有使用。因此,我修改了培训代码如下 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/ml/ml.hpp> using namespace cv; using namespace cv::ml; int main() { // Data for visual representation int width = 512, height = 512; Mat image = Mat::zeros(height, width, CV_8UC3); // Set up training data float labels[4] = {1.0, -1.0, -1.0, -1.0}; Mat labelsMat(4, 1, CV_32FC1, labels); float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} }; Mat trainingDataMat(4, 2, CV_32FC1, trainingData); // Set up SVM's parameters Ptr<SVM> svm = SVM::create(); svm->setType(SVM::C_SVC); svm->setKernel(SVM::LINEAR); //svm.term_crit = SVM::getTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6); // Train the SVM //Ptr<SVM> svm1 = SVM::trainAuto(); SVM->train(trainingDataMat, labelsMat, Mat(), Mat(), svm); Vec3b green(0,255,0), blue (255,0,0); // Show the decision regions given by the SVM for (int i = 0; i < image.rows; ++i) for (int j = 0; j < image.cols; ++j) { Mat sampleMat = (Mat_<float>(1,2) << j,i); float response = svm->predict(sampleMat); if (response == 1) image.at<Vec3b>(i,j) = green; else if (response == -1) image.at<Vec3b>(i,j) = blue; } // Show the training data int thickness = -1; int lineType = 8; circle( image, Point(501, 10), 5, Scalar( 0, 0, 0), thickness, lineType); circle( image, Point(255, 10), 5, Scalar(255, 255, 255), thickness, lineType); circle( image, Point(501, 255), 5, Scalar(255, 255, 255), thickness, lineType); circle( image, Point( 10, 501), 5, Scalar(255, 255, 255), thickness, lineType); // Show support vectors thickness = 2; lineType = 8; int c = SVM.get_support_vector_count(); for (int i = 0; i < c; ++i) { const float* v = SVM.get_support_vector(i); circle( image, Point( (int) v[0], (int) v[1]), 6, Scalar(128, 128, 128), thickness, lineType); } imwrite("result.png", image); // save the image imshow("SVM Simple Example", image); // show it to the user waitKey(0); } #包括 #包括 #包括 使用名称空间cv; 使用名称空间cv::ml; int main() { //用于视觉表示的数据 整数宽度=512,高度=512; 材料图像=材料::零(高度、宽度、CV_8UC3); //建立培训数据 浮动标签[4]={1.0,-1.0,-1.0,-1.0}; Mat标签Mat(4,1,CV_32FC1,标签); float trainingData[4][2]={{501,10},{255,10},{501255},{10501}; Mat培训数据Mat(4,2,CV_32FC1,培训数据); //建立支持向量机的参数 Ptr-svm=svm::create(); svm->setType(svm::C_SVC); svm->setKernel(svm::LINEAR); //svm.term_crit=svm::GettermCriter(CV_term crit_ITER,100,1e-6); //训练支持向量机 //Ptr svm1=SVM::trainAuto(); SVM->train(trainingDataMat,LabelMat,Mat(),Mat(),SVM); Vec3b绿色(0255,0),蓝色(255,0,0); //显示SVM给出的决策区域 对于(int i=0;i训练(trainingDataMat,LabelMat,Mat(),Mat(),支持向量机)应该是:svm->train(trainingDataMat、ROW_样本、labelsMat)_C++_Opencv_Opencv3.0 - Fatal编程技术网 setType(svm::C_SVC); svm->setKernel(svm::LINEAR); //svm.term_crit=svm::GettermCriter(CV_term crit_ITER,100,1e-6); //训练支持向量机 //Ptr svm1=SVM::trainAuto(); SVM->train(trainingDataMat,LabelMat,Mat(),Mat(),SVM); Vec3b绿色(0255,0),蓝色(255,0,0); //显示SVM给出的决策区域 对于(int i=0;i训练(trainingDataMat,LabelMat,Mat(),Mat(),支持向量机)应该是:svm->train(trainingDataMat、ROW_样本、labelsMat),c++,opencv,opencv3.0,C++,Opencv,Opencv3.0" /> setType(svm::C_SVC); svm->setKernel(svm::LINEAR); //svm.term_crit=svm::GettermCriter(CV_term crit_ITER,100,1e-6); //训练支持向量机 //Ptr svm1=SVM::trainAuto(); SVM->train(trainingDataMat,LabelMat,Mat(),Mat(),SVM); Vec3b绿色(0255,0),蓝色(255,0,0); //显示SVM给出的决策区域 对于(int i=0;i训练(trainingDataMat,LabelMat,Mat(),Mat(),支持向量机)应该是:svm->train(trainingDataMat、ROW_样本、labelsMat),c++,opencv,opencv3.0,C++,Opencv,Opencv3.0" />

支持向量机与c++; 我尝试用支持向量机进行C++的目标检测。我正在关注这一点。我面临一个问题,CvSVM目前还没有使用。因此,我修改了培训代码如下 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/ml/ml.hpp> using namespace cv; using namespace cv::ml; int main() { // Data for visual representation int width = 512, height = 512; Mat image = Mat::zeros(height, width, CV_8UC3); // Set up training data float labels[4] = {1.0, -1.0, -1.0, -1.0}; Mat labelsMat(4, 1, CV_32FC1, labels); float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} }; Mat trainingDataMat(4, 2, CV_32FC1, trainingData); // Set up SVM's parameters Ptr<SVM> svm = SVM::create(); svm->setType(SVM::C_SVC); svm->setKernel(SVM::LINEAR); //svm.term_crit = SVM::getTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6); // Train the SVM //Ptr<SVM> svm1 = SVM::trainAuto(); SVM->train(trainingDataMat, labelsMat, Mat(), Mat(), svm); Vec3b green(0,255,0), blue (255,0,0); // Show the decision regions given by the SVM for (int i = 0; i < image.rows; ++i) for (int j = 0; j < image.cols; ++j) { Mat sampleMat = (Mat_<float>(1,2) << j,i); float response = svm->predict(sampleMat); if (response == 1) image.at<Vec3b>(i,j) = green; else if (response == -1) image.at<Vec3b>(i,j) = blue; } // Show the training data int thickness = -1; int lineType = 8; circle( image, Point(501, 10), 5, Scalar( 0, 0, 0), thickness, lineType); circle( image, Point(255, 10), 5, Scalar(255, 255, 255), thickness, lineType); circle( image, Point(501, 255), 5, Scalar(255, 255, 255), thickness, lineType); circle( image, Point( 10, 501), 5, Scalar(255, 255, 255), thickness, lineType); // Show support vectors thickness = 2; lineType = 8; int c = SVM.get_support_vector_count(); for (int i = 0; i < c; ++i) { const float* v = SVM.get_support_vector(i); circle( image, Point( (int) v[0], (int) v[1]), 6, Scalar(128, 128, 128), thickness, lineType); } imwrite("result.png", image); // save the image imshow("SVM Simple Example", image); // show it to the user waitKey(0); } #包括 #包括 #包括 使用名称空间cv; 使用名称空间cv::ml; int main() { //用于视觉表示的数据 整数宽度=512,高度=512; 材料图像=材料::零(高度、宽度、CV_8UC3); //建立培训数据 浮动标签[4]={1.0,-1.0,-1.0,-1.0}; Mat标签Mat(4,1,CV_32FC1,标签); float trainingData[4][2]={{501,10},{255,10},{501255},{10501}; Mat培训数据Mat(4,2,CV_32FC1,培训数据); //建立支持向量机的参数 Ptr-svm=svm::create(); svm->setType(svm::C_SVC); svm->setKernel(svm::LINEAR); //svm.term_crit=svm::GettermCriter(CV_term crit_ITER,100,1e-6); //训练支持向量机 //Ptr svm1=SVM::trainAuto(); SVM->train(trainingDataMat,LabelMat,Mat(),Mat(),SVM); Vec3b绿色(0255,0),蓝色(255,0,0); //显示SVM给出的决策区域 对于(int i=0;i训练(trainingDataMat,LabelMat,Mat(),Mat(),支持向量机)应该是:svm->train(trainingDataMat、ROW_样本、labelsMat)

支持向量机与c++; 我尝试用支持向量机进行C++的目标检测。我正在关注这一点。我面临一个问题,CvSVM目前还没有使用。因此,我修改了培训代码如下 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/ml/ml.hpp> using namespace cv; using namespace cv::ml; int main() { // Data for visual representation int width = 512, height = 512; Mat image = Mat::zeros(height, width, CV_8UC3); // Set up training data float labels[4] = {1.0, -1.0, -1.0, -1.0}; Mat labelsMat(4, 1, CV_32FC1, labels); float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} }; Mat trainingDataMat(4, 2, CV_32FC1, trainingData); // Set up SVM's parameters Ptr<SVM> svm = SVM::create(); svm->setType(SVM::C_SVC); svm->setKernel(SVM::LINEAR); //svm.term_crit = SVM::getTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6); // Train the SVM //Ptr<SVM> svm1 = SVM::trainAuto(); SVM->train(trainingDataMat, labelsMat, Mat(), Mat(), svm); Vec3b green(0,255,0), blue (255,0,0); // Show the decision regions given by the SVM for (int i = 0; i < image.rows; ++i) for (int j = 0; j < image.cols; ++j) { Mat sampleMat = (Mat_<float>(1,2) << j,i); float response = svm->predict(sampleMat); if (response == 1) image.at<Vec3b>(i,j) = green; else if (response == -1) image.at<Vec3b>(i,j) = blue; } // Show the training data int thickness = -1; int lineType = 8; circle( image, Point(501, 10), 5, Scalar( 0, 0, 0), thickness, lineType); circle( image, Point(255, 10), 5, Scalar(255, 255, 255), thickness, lineType); circle( image, Point(501, 255), 5, Scalar(255, 255, 255), thickness, lineType); circle( image, Point( 10, 501), 5, Scalar(255, 255, 255), thickness, lineType); // Show support vectors thickness = 2; lineType = 8; int c = SVM.get_support_vector_count(); for (int i = 0; i < c; ++i) { const float* v = SVM.get_support_vector(i); circle( image, Point( (int) v[0], (int) v[1]), 6, Scalar(128, 128, 128), thickness, lineType); } imwrite("result.png", image); // save the image imshow("SVM Simple Example", image); // show it to the user waitKey(0); } #包括 #包括 #包括 使用名称空间cv; 使用名称空间cv::ml; int main() { //用于视觉表示的数据 整数宽度=512,高度=512; 材料图像=材料::零(高度、宽度、CV_8UC3); //建立培训数据 浮动标签[4]={1.0,-1.0,-1.0,-1.0}; Mat标签Mat(4,1,CV_32FC1,标签); float trainingData[4][2]={{501,10},{255,10},{501255},{10501}; Mat培训数据Mat(4,2,CV_32FC1,培训数据); //建立支持向量机的参数 Ptr-svm=svm::create(); svm->setType(svm::C_SVC); svm->setKernel(svm::LINEAR); //svm.term_crit=svm::GettermCriter(CV_term crit_ITER,100,1e-6); //训练支持向量机 //Ptr svm1=SVM::trainAuto(); SVM->train(trainingDataMat,LabelMat,Mat(),Mat(),SVM); Vec3b绿色(0255,0),蓝色(255,0,0); //显示SVM给出的决策区域 对于(int i=0;i训练(trainingDataMat,LabelMat,Mat(),Mat(),支持向量机)应该是:svm->train(trainingDataMat、ROW_样本、labelsMat),c++,opencv,opencv3.0,C++,Opencv,Opencv3.0,1) 当您引用svm实例时,应该使用svm(变量名),而不是svm类名 2) 在分类问题的情况下,回答必须是分类的。所以 float labels[4] = { 1.0, -1.0, -1.0, -1.0 }; Mat labelsMat(4, 1, CV_32FC1, labels); 应该是: int labels[4] = { 1, -1, -1, -1 }; Mat labelsMat(4, 1, CV_32SC1, labels); 3) 列车接受不同的参数支持向量机->训练(t

1) 当您引用svm实例时,应该使用
svm
(变量名),而不是
svm
类名

2) 在分类问题的情况下,回答必须是分类的。所以

float labels[4] = { 1.0, -1.0, -1.0, -1.0 };
Mat labelsMat(4, 1, CV_32FC1, labels);
应该是:

int labels[4] = { 1, -1, -1, -1 };
Mat labelsMat(4, 1, CV_32SC1, labels); 
3)
列车
接受不同的参数<代码>支持向量机->训练(trainingDataMat,LabelMat,Mat(),Mat(),支持向量机)应该是:
svm->train(trainingDataMat、ROW_样本、labelsMat)

4) OpenCV 3.0中不存在
get\u support\u vector\u count
int c=SVM.get_support_vector_count()应该是:
int c=svm->getSupportVectors().rows

5) OpenCV 3.0中不存在
get\u support\u vector
const float*v=SVM,得到支持向量(i)应该是:
const float*v=svm->getSupportVectors().ptr(i)



应答中的代码已按预期工作。如果你引入这样的错误,它显然不会起作用。

你是否尝试了
svm->train…
而不是
svm->train…
?顺便说一句,发布错误消息可能会有所帮助