利用SVM解决2维空间向量的3级分类问题
【原文:http://blog.csdn.net/firefight/article/details/6400060】 为了学习OPENCV SVM分类器, 参考网上的 利用SVM解决2维空间向量的分类问题 实现并改为C代码,仅供参考 环境:OPENCV2.2 VS2008 步骤: 1,生成随机的点,并按一定的空间分布将其归类 2,
【原文:http://blog.csdn.net/firefight/article/details/6400060】
为了学习OPENCV SVM分类器, 参考网上的"利用SVM解决2维空间向量的分类问题"实现并改为C++代码,仅供参考
环境:OPENCV2.2 + VS2008
步骤:
1,生成随机的点,并按一定的空间分布将其归类
2,创建SVM并利用随机点样本进行训练
3,将整个空间按SVM分类结果进行划分,并显示支持向量
[cpp] view plaincopy
- #include "stdafx.h"
-
#include
- void drawCross(Mat &img, Point center, Scalar color)
- {
- int col = center.x > 2 ? center.x : 2;
- int row = center.y> 2 ? center.y : 2;
- line(img, Point(col -2, row - 2), Point(col + 2, row + 2), color);
- line(img, Point(col + 2, row - 2), Point(col - 2, row + 2), color);
- }
- int newSvmTest(int rows, int cols, int testCount)
- {
- if(testCount > rows * cols)
- return 0;
- Mat img = Mat::zeros(rows, cols, CV_8UC3);
- Mat testPoint = Mat::zeros(rows, cols, CV_8UC1);
- Mat data = Mat::zeros(testCount, 2, CV_32FC1);
- Mat res = Mat::zeros(testCount, 1, CV_32SC1);
- //Create random test points
- for (int i= 0; i
- {
- int row = rand() % rows;
- int col = rand() % cols;
-
if(testPoint.at
char>(row, col) == 0) - {
-
testPoint.at
char >(row, col) = 1; - data.atfloat>(i, 0) = float (col) / cols;
- data.atfloat>(i, 1) = float (row) / rows;
- }
- else
- {
- i--;
- continue;
- }
- if (row > ( 50 * cos(col * CV_PI/ 100) + 200) )
- {
- drawCross(img, Point(col, row), CV_RGB(255, 0, 0));
-
res.at
int >(i, 0) = 1; - }
- else
- {
- if (col > 200)
- {
- drawCross(img, Point(col, row), CV_RGB(0, 255, 0));
-
res.at
int >(i, 0) = 2; - }
- else
- {
- drawCross(img, Point(col, row), CV_RGB(0, 0, 255));
-
res.at
int >(i, 0) = 3; - }
- }
- }
- //Show test points
- imshow("dst", img);
- waitKey(0);
- /////////////START SVM TRAINNING//////////////////
- CvSVM svm = CvSVM();
- CvSVMParams param;
- CvTermCriteria criteria;
- criteria= cvTermCriteria(CV_TERMCRIT_EPS, 1000, FLT_EPSILON);
-
/* SVM种类:CvSVM::C_SVC
Kernel的种类:CvSVM::RBF
degree:10.0(此次不使用)
gamma:8.0
coef0:1.0(此次不使用)
C:10.0
nu:0.5(此次不使用)
p:0.1(此次不使用)
然后对训练数据正规化处理,并放在CvMat型的数组里。*/
- param= CvSVMParams (CvSVM::C_SVC, CvSVM::RBF, 10.0, 8.0, 1.0, 10.0, 0.5, 0.1, NULL, criteria);
- svm.train(data, res, Mat(), Mat(), param);
- for (int i= 0; i
- {
- for (int j= 0; j
- {
- Mat m = Mat::zeros(1, 2, CV_32FC1);
- m.atfloat>(0,0) = float (j) / cols;
- m.atfloat>(0,1) = float (i) / rows;
- float ret = 0.0;
- ret = svm.predict(m);
- Scalar rcolor;
- switch ((int) ret)
- {
- case 1: rcolor= CV_RGB(100, 0, 0); break;
- case 2: rcolor= CV_RGB(0, 100, 0); break;
- case 3: rcolor= CV_RGB(0, 0, 100); break;
- }
- line(img, Point(j,i), Point(j,i), rcolor);
- }
- }
- imshow("dst", img);
- waitKey(0);
- //Show support vectors
- int sv_num= svm.get_support_vector_count();
- for (int i= 0; i
- {
- const float* support = svm.get_support_vector(i);
- circle(img, Point((int) (support[0] * cols), (int) (support[1] * rows)), 5, CV_RGB(200, 200, 200));
- }
- imshow("dst", img);
- waitKey(0);
- return 0;
- }
- int main(int argc, char** argv)
- {
- return newSvmTest(400, 600, 100);
- }
学习样本:
分类:
支持向量:

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung für das Problem, dass das Win11-System das chinesische Sprachpaket nicht installieren kann. Mit der Einführung des Windows 11-Systems begannen viele Benutzer, ihr Betriebssystem zu aktualisieren, um neue Funktionen und Schnittstellen zu nutzen. Einige Benutzer stellten jedoch fest, dass sie das chinesische Sprachpaket nach dem Upgrade nicht installieren konnten, was ihre Erfahrung beeinträchtigte. In diesem Artikel besprechen wir die Gründe, warum das Win11-System das chinesische Sprachpaket nicht installieren kann, und stellen einige Lösungen bereit, die Benutzern bei der Lösung dieses Problems helfen. Ursachenanalyse Lassen Sie uns zunächst die Unfähigkeit des Win11-Systems analysieren

Da sich die Smartphone-Technologie ständig weiterentwickelt, spielen Mobiltelefone eine immer wichtigere Rolle in unserem täglichen Leben. Als Flaggschiff-Telefon mit Schwerpunkt auf Spieleleistung erfreut sich das Black Shark-Telefon bei Spielern großer Beliebtheit. Manchmal sind wir jedoch auch mit der Situation konfrontiert, dass das Black Shark-Telefon nicht eingeschaltet werden kann. Zu diesem Zeitpunkt müssen wir einige Maßnahmen ergreifen, um dieses Problem zu lösen. Als Nächstes geben wir Ihnen fünf Tipps, wie Sie das Problem lösen können, dass sich das Black Shark-Telefon nicht einschaltet: Schritt 1: Überprüfen Sie zunächst die Akkuleistung. Stellen Sie zunächst sicher, dass Ihr Black Shark-Telefon über genügend Strom verfügt. Möglicherweise ist der Akku des Telefons leer

Jeder weiß, dass das Gerät möglicherweise nicht richtig funktioniert oder nicht richtig mit dem Computer interagiert, wenn der Computer den Treiber nicht laden kann. Wie lösen wir also das Problem, wenn auf dem Computer eine Meldung angezeigt wird, dass der Treiber auf diesem Gerät nicht geladen werden kann? Der unten stehende Editor zeigt Ihnen zwei Möglichkeiten, wie Sie das Problem einfach lösen können. Der Treiber kann auf diesem Gerät nicht geladen werden. Lösung 1. Suchen Sie im Startmenü nach „Kernel Isolation“. 2. Deaktivieren Sie die Speicherintegrität. Die Meldung oben lautet: „Die Speicherintegrität wurde deaktiviert. Ihr Gerät ist möglicherweise anfällig.“ Klicken Sie einfach darauf und ignorieren Sie es. 3. Das Problem kann nach einem Neustart der Maschine behoben werden.

Durch die kontinuierliche Entwicklung der sozialen Medien ist Xiaohongshu zu einer Plattform für immer mehr junge Menschen geworden, auf der sie ihr Leben teilen und schöne Dinge entdecken können. Viele Benutzer haben beim Posten von Bildern Probleme mit der automatischen Speicherung. Wie kann man dieses Problem lösen? 1. Wie kann das Problem des automatischen Speicherns von Bildern beim Veröffentlichen auf Xiaohongshu gelöst werden? 1. Cache leeren Zuerst können wir versuchen, die Cache-Daten von Xiaohongshu zu löschen. Die Schritte sind wie folgt: (1) Öffnen Sie Xiaohongshu und klicken Sie auf die Schaltfläche „Mein“ in der unteren rechten Ecke. (2) Suchen Sie auf der persönlichen Center-Seite nach „Einstellungen“ und klicken Sie darauf. (3) Scrollen Sie nach unten und suchen Sie nach „; Option „Cache löschen“. Klicken Sie auf „OK“. Nachdem Sie den Cache geleert haben, geben Sie Xiaohongshu erneut ein und versuchen Sie, Bilder zu posten, um zu sehen, ob das Problem mit dem automatischen Speichern behoben ist. 2. Aktualisieren Sie die Xiaohongshu-Version, um sicherzustellen, dass Ihr Xiaohongshu

Titel: Analyse des Oracle-Fehlers 3114: Ursachen und Lösungen Bei der Verwendung einer Oracle-Datenbank stoßen Sie häufig auf verschiedene Fehlercodes, unter denen Fehler 3114 am häufigsten vorkommt. Bei diesem Fehler handelt es sich im Allgemeinen um Datenbankverbindungsprobleme, die beim Zugriff auf die Datenbank zu Ausnahmen führen können. In diesem Artikel wird der Oracle-Fehler 3114 interpretiert, seine Ursachen erläutert und spezifische Methoden zur Behebung des Fehlers sowie zugehörige Codebeispiele vorgestellt. 1. Definition von Fehler 3114 Oracle-Fehler 3114 bestanden

WordPress ist ein sehr beliebtes Open-Source-Content-Management-System. Viele einzelne Benutzer und Unternehmen entscheiden sich für die Verwendung von WordPress zum Erstellen und Verwalten ihrer eigenen Websites. Allerdings treten während der Installation von WordPress manchmal Probleme auf, wie z. B. Datenbankverbindungsfehler, Probleme mit Dateiberechtigungen usw. Dieser Artikel bietet eine Anleitung zur Lösung häufiger WordPress-Installationsprobleme und hilft Benutzern anhand spezifischer Codebeispiele, Probleme schnell zu lösen. Problem 1: Datenbankverbindungsfehler bei der Installation von WordPress

Titel: Methoden und Codebeispiele zur Lösung des Problems verstümmelter chinesischer Daten, die in Oracle importiert werden. Beim Importieren chinesischer Daten in die Oracle-Datenbank treten häufig verstümmelte Zeichen auf. Dies kann auf falsche Datenbank-Zeichensatzeinstellungen oder Probleme bei der Kodierungskonvertierung zurückzuführen sein. . Um dieses Problem zu lösen, können wir einige Methoden anwenden, um sicherzustellen, dass die importierten chinesischen Daten korrekt angezeigt werden können. Im Folgenden finden Sie einige Lösungen und spezifische Codebeispiele: 1. Überprüfen Sie die Zeichensatzeinstellungen der Datenbank. In der Oracle-Datenbank sind die Zeichensatzeinstellungen

Sind Sie besorgt über verstümmelten WordPress-Backend-Code? Probieren Sie diese Lösungen aus, da spezifische Codebeispiele erforderlich sind. Mit der weit verbreiteten Anwendung von WordPress bei der Website-Erstellung kann es bei vielen Benutzern zu Problemen mit verstümmeltem Code im WordPress-Backend kommen. Ein solches Problem führt dazu, dass die Hintergrundverwaltungsoberfläche verstümmelte Zeichen anzeigt, was den Benutzern große Probleme bereitet. In diesem Artikel werden einige gängige Lösungen vorgestellt, die Benutzern helfen, das Problem verstümmelter Zeichen im WordPress-Backend zu lösen. Ändern Sie die Datei wp-config.php und öffnen Sie wp-config.
