


OpenCV cv.Mat- und .txt-Dateidaten-Lese- und Schreibvorgänge
Dieser Artikel stellt hauptsächlich die Lese- und Schreibvorgänge von OpenCV cv.Mat- und .txt-Dateidaten vor und gebe sie als Referenz weiter
1 Das Lesen und Schreiben von
kann mit cvSave und cvLoad implementiert werden. Das Format ähnelt .xml/.yml. Wenn Sie sich jedoch dem Lesen und Schreiben von Daten mit OpenCV widmen, ist es besser, .xml/.yml-Dateien zu verwenden Format. Ich bevorzuge das .yml-Format, die Lesbarkeit ist großartig.
Verwenden Sie cvSave und cvLoad zum Lesen und Schreiben von .txt-Dateien. Die Implementierungsmethode und das Datenformat sind grundsätzlich dieselben wie bei .yml-Dateien.
Zum Beispiel: cvSave("camera_matrix.txt",camera_matrix); //Speichern Sie den Array-Header von camera_matrix und die Daten, auf die er sich bezieht (eine Datei ähnlich dem YML-Format)
2 Andere Die .txt-Dateidaten
des Programms können mit herkömmlichen sprintf_s und fprintf_s implementiert werden, die Effizienz ist jedoch relativ gering. Hier ist eine schnelle und benutzerfreundliche Methode, die stds Steam und Vector verwendet.
#include <iostream> #include <fstream> #include <iterator> #include <vector> using namespace std; /*---------------------------- * 功能 : 将 cv::Mat 数据写入到 .txt 文件 *---------------------------- * 函数 : WriteData * 访问 : public * 返回 : -1:打开文件失败;0:写入数据成功;1:矩阵为空 * * 参数 : fileName [in] 文件名 * 参数 : matData [in] 矩阵数据 */ int WriteData(string fileName, cv::Mat& matData) { int retVal = 0; // 打开文件 ofstream outFile(fileName.c_str(), ios_base::out); //按新建或覆盖方式写入 if (!outFile.is_open()) { cout << "打开文件失败" << endl; retVal = -1; return (retVal); } // 检查矩阵是否为空 if (matData.empty()) { cout << "矩阵为空" << endl; retVal = 1; return (retVal); } // 写入数据 for (int r = 0; r < matData.rows; r++) { for (int c = 0; c < matData.cols; c++) { uchar data = matData.at<uchar>(r,c); //读取数据,at<type> - type 是矩阵元素的具体数据格式 outFile << data << "\t" ; //每列数据用 tab 隔开 } outFile << endl; //换行 } return (retVal); } /*---------------------------- * 功能 : 从 .txt 文件中读入数据,保存到 cv::Mat 矩阵 * - 默认按 float 格式读入数据, * - 如果没有指定矩阵的行、列和通道数,则输出的矩阵是单通道、N 行 1 列的 *---------------------------- * 函数 : LoadData * 访问 : public * 返回 : -1:打开文件失败;0:按设定的矩阵参数读取数据成功;1:按默认的矩阵参数读取数据 * * 参数 : fileName [in] 文件名 * 参数 : matData [out] 矩阵数据 * 参数 : matRows [in] 矩阵行数,默认为 0 * 参数 : matCols [in] 矩阵列数,默认为 0 * 参数 : matChns [in] 矩阵通道数,默认为 0 */ int LoadData(string fileName, cv::Mat& matData, int matRows = 0, int matCols = 0, int matChns = 0) { int retVal = 0; // 打开文件 ifstream inFile(fileName.c_str(), ios_base::in); if(!inFile.is_open()) { cout << "读取文件失败" << endl; retVal = -1; return (retVal); } // 载入数据 istream_iterator<float> begin(inFile); //按 float 格式取文件数据流的起始指针 istream_iterator<float> end; //取文件流的终止位置 vector<float> inData(begin,end); //将文件数据保存至 std::vector 中 cv::Mat tmpMat = cv::Mat(inData); //将数据由 std::vector 转换为 cv::Mat // 输出到命令行窗口 //copy(vec.begin(),vec.end(),ostream_iterator<double>(cout,"\t")); // 检查设定的矩阵尺寸和通道数 size_t dataLength = inData.size(); //1.通道数 if (matChns == 0) { matChns = 1; } //2.行列数 if (matRows != 0 && matCols == 0) { matCols = dataLength / matChns / matRows; } else if (matCols != 0 && matRows == 0) { matRows = dataLength / matChns / matCols; } else if (matCols == 0 && matRows == 0) { matRows = dataLength / matChns; matCols = 1; } //3.数据总长度 if (dataLength != (matRows * matCols * matChns)) { cout << "读入的数据长度 不满足 设定的矩阵尺寸与通道数要求,将按默认方式输出矩阵!" << endl; retVal = 1; matChns = 1; matRows = dataLength; } // 将文件数据保存至输出矩阵 matData = tmpMat.reshape(matChns, matRows).clone(); return (retVal); }
Verwandte Empfehlungen:
Textzeile für Zeile unter Python3.4.3 lesen und Duplikate entfernen Methode
Das obige ist der detaillierte Inhalt vonOpenCV cv.Mat- und .txt-Dateidaten-Lese- und Schreibvorgänge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

1. Theoretische Grundlage der Bildpyramide Die Bildpyramide ist eine Art mehrskaliger Ausdruck von Bildern. Es handelt sich um eine effektive, aber konzeptionell einfache Struktur zur Erklärung von Bildern mit mehreren Auflösungen. Eine Bildpyramide ist eine Sammlung von Bildern mit zunehmend geringerer Auflösung, die in Pyramidenform angeordnet sind und vom gleichen Originalbild abgeleitet sind. Es wird durch Ladder-Down-Sampling ermittelt und das Sampling wird erst dann gestoppt, wenn eine bestimmte Beendigungsbedingung erreicht ist. Wir vergleichen Bilder Schicht für Schicht zu einer Pyramide. Je höher die Ebene, desto kleiner das Bild und desto geringer die Auflösung. Warum machen wir also eine Bildpyramide? Das liegt daran, dass sich durch die Änderung der Pixelgröße manchmal nichts an den Eigenschaften ändert. Wenn ich Ihnen beispielsweise ein Bild mit 10 Millionen Pixeln zeige, können Sie erkennen, dass sich darin eine Person befindet kann auch wissen, dass da ein Mensch drin ist, der aber gegen den Plan ist

Verwenden Sie den Befehl pip, um das OpenCV-Tutorial einfach zu installieren. OpenCV (OpenSource Computer Vision Library) ist eine Open-Source-Computer-Vision-Bibliothek. Sie enthält eine große Anzahl von Computer-Vision-Algorithmen, die Entwicklern beim schnellen Erstellen von Bildern helfen können und videoverarbeitungsbezogene Anwendungen. Bevor wir OpenCV verwenden können, müssen wir es zuerst installieren. Glücklicherweise bietet Python ein leistungsstarkes Tool zur Verwaltung von Bibliotheken von Drittanbietern

OpenCV ist eine Open-Source-Bibliothek für Computer Vision und Bildverarbeitung, die in den Bereichen maschinelles Lernen, Bilderkennung, Videoverarbeitung und anderen Bereichen weit verbreitet ist. Bei der Entwicklung mit OpenCV entscheiden sich viele Entwickler für die Verwendung von PyCharm, einer leistungsstarken integrierten Python-Entwicklungsumgebung, um Programme besser debuggen und ausführen zu können. Dieser Artikel bietet PyCharm-Benutzern ein Installations-Tutorial für OpenCV mit spezifischen Codebeispielen. Schritt eins: Python installieren Stellen Sie zunächst sicher, dass Python installiert ist

1. Projekteffekt 2. Kernprozess 1. OpenCV liest den Videostream und zeichnet auf jedem Frame des Bildes ein Rechteck. 2. Verwenden Sie Mediapipe, um die Koordinaten der Finger-Schlüsselpunkte zu erhalten. 3. Bestimmen Sie anhand der Koordinatenposition des Fingers und der Koordinatenposition des Rechtecks, ob sich der Fingerpunkt auf dem Rechteck befindet. Wenn dies der Fall ist, folgt das Rechteck der Fingerbewegung. 3. Vorbereitung der Codeprozessumgebung: python:3.8.8opencv:4.2.0.32mediapipe:0.8.10.1 Hinweis: 1. Wenn die OpenCV-Version zu hoch oder zu niedrig ist, kann es zu Problemen kommen, z. B. dass die Kamera nicht geöffnet werden kann , Abstürze usw. Die Python-Version wirkt sich auf die optionalen Versionen von opencv aus. 2. pipinstallmediapipe kann op verursachen

Das Paket org.opencv.imgproc der JavaOpenCV-Bibliothek enthält eine Klasse namens Imgproc, die verschiedene Methoden zum Verarbeiten von Eingabebildern bereitstellt. Es bietet eine Reihe von Methoden zum Zeichnen geometrischer Formen auf Bildern. Um eine Pfeillinie zu zeichnen, müssen Sie die Methode ArrowedLine() dieser Klasse aufrufen. Die Methode akzeptiert die folgenden Parameter: ein Mat-Objekt, das das Bild darstellt, auf dem die Linie gezeichnet werden soll. Ein Point-Objekt, das zwei Punkte zwischen Linien darstellt. gezeichnet. Ein Skalarobjekt, das die Linienfarbe darstellt. (BGR) Eine Ganzzahl, die die Linienstärke darstellt (Standard: 1). Beispiel importorg.opencv.core.Core;importo

Computer Vision (Computer Vision) ist einer der wichtigen Zweige im Bereich der künstlichen Intelligenz. Sie ermöglicht es Computern, visuelle Signale wie Bilder und Videos automatisch wahrzunehmen und zu verstehen und Anwendungsszenarien wie Mensch-Computer-Interaktion und automatisierte Steuerung zu realisieren. OpenCV (OpenSourceComputerVisionLibrary) ist eine beliebte Open-Source-Computer-Vision-Bibliothek, die in den Bereichen Computer Vision, maschinelles Lernen, Deep Learning und anderen Bereichen weit verbreitet ist. In diesem Artikel wird die Verwendung vorgestellt

Bildsegmentierung und -extraktion: Vordergrundobjekte werden segmentiert oder als Zielbilder in Bildern extrahiert. Der Hintergrund selbst interessiert den Watershed-Algorithmus und den GrabCut-Algorithmus nicht, um das Bild zu segmentieren und zu extrahieren. Verwenden Sie den Wassereinzugsgebietsalgorithmus, um eine Bildsegmentierung und -extraktion zu erreichen. Der Wassereinzugsgebietsalgorithmus vergleicht Bilder anschaulich mit geografischen Geländeoberflächen, um eine Bildsegmentierung zu erreichen. Algorithmusprinzip: Jedes Graustufenbild kann als geografische Geländeoberfläche betrachtet werden. Gebiete mit hohen Graustufenwerten können als Berggipfel und Gebiete mit niedrigen Graustufenwerten als Täler betrachtet werden. Das Bild links ist das Originalbild und das Bild rechts ist die entsprechende „topografische Oberfläche“. Durch diesen Prozess wird das Bild in zwei unterschiedliche Gruppen unterteilt: Einzugsgebiete und Wassereinzugsgebietslinien. Der von uns errichtete Damm ist die Wasserscheide, also das Originalbild

Wie implementiert man die Videoverarbeitung mit PHP und der OpenCV-Bibliothek? Zusammenfassung: Die Videoverarbeitung ist zu einer wichtigen Technologie in modernen wissenschaftlichen und technologischen Anwendungen geworden. In diesem Artikel wird erläutert, wie Sie die Programmiersprache PHP in Kombination mit der OpenCV-Bibliothek verwenden, um einige grundlegende Videoverarbeitungsfunktionen zu implementieren, und entsprechende Codebeispiele anhängen. Schlüsselwörter: PHP, OpenCV, Videoverarbeitung, Codebeispiele Einführung: Mit der Entwicklung des Internets und der Popularität von Smartphones sind Videoinhalte zu einem unverzichtbaren Bestandteil des Lebens der Menschen geworden. Um jedoch Videobearbeitung zu erreichen und
