gpt4 book ai didi

opencv - 绘制可视化图OpenCV SVM数据集

转载 作者:行者123 更新时间:2023-12-02 17:43:16 25 4
gpt4 key购买 nike

我是OpenCV SVM的新手。有没有办法为OpenCV svm开发的训练数据集绘制图形或开发一些可视内容,以便我可以检查训练数据是否准确并相应地调整SVM参数?

最佳答案

可以可视化SVM响应,并且可以使用OpenCV绘图功能来完成。

这个问题已经很老了,但是在可视化SVM的Google结果中显示的很高。我回答可能发现此问题的任何人。

这里有一个带有示例代码的SVM教程:
https://docs.opencv.org/2.4/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html

它包含用于可视化SVM学习的代码。请注意,此示例在平面上显示数据,因此仅在您的数据为2D时才可以使用。

因此,下面的代码(来自链接的OpenCV文档)创建了一个512 x 512像素的图像,并针对每个像素检查该图像是否归为一类或另一类(响应1或-1)。在其顶部,标记了数据点,因此您可以查看SVM分类是否运行良好。

// Train the SVM
CvSVM SVM;
SVM.train(trainingDataMat, labelsMat, Mat(), Mat(), params);

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);

如果您的数据点是整数对,则这是一种好方法。如果您有 float数据点,则需要确定所需的可视化分辨率,并使像素代表的不是1 x 1块,而是您要求的最小分辨率(例如5.0e-27 x 2.0e-24)

关于opencv - 绘制可视化图OpenCV SVM数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41312635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com