Maison développement back-end Tutoriel Python Opérations de lecture et d'écriture de données de fichiers OpenCV cv.Mat et .txt

Opérations de lecture et d'écriture de données de fichiers OpenCV cv.Mat et .txt

May 03, 2018 pm 01:51 PM
opencv

Cet article présente principalement les opérations de lecture et d'écriture des données des fichiers OpenCV cv.Mat et .txt. Maintenant, je le partage avec vous et le donne comme référence

1. La lecture et l'écriture
peuvent être implémentées à l'aide de cvSave et cvLoad. Le format est similaire à .xml/.yml. Cependant, si vous vous consacrez à la lecture et à l'écriture de données avec OpenCV, il est préférable d'utiliser le fichier .xml/.yml. format. Je préfère le format .yml, la lisibilité est excellente.
Utilisez cvSave et cvLoad pour lire et écrire des fichiers .txt. La méthode d'implémentation et le format des données sont fondamentalement les mêmes que ceux des fichiers .yml.
Par exemple : cvSave("camera_matrix.txt",camera_matrix); //Enregistrez l'en-tête du tableau de camera_matrix et les données auxquelles il fait référence (un fichier similaire au format yml)

2. autres Les données du fichier .txt du programme
peuvent être implémentées à l'aide de sprintf_s et fprintf_s conventionnels, mais l'efficacité est relativement faible. Voici une méthode rapide et facile à utiliser qui utilise steam et vector de std.

#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); 
}
Copier après la connexion

Recommandations associées :

Lire le texte txt ligne par ligne sous python3.4.3 et Méthodes pour supprimer les doublons

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Installez rapidement le guide d'étude OpenCV à l'aide du gestionnaire de packages pip Installez rapidement le guide d'étude OpenCV à l'aide du gestionnaire de packages pip Jan 18, 2024 am 09:55 AM

Utilisez la commande pip pour installer facilement le didacticiel OpenCV, qui nécessite des exemples de code spécifiques. OpenCV (OpenSource Computer Vision Library) est une bibliothèque de vision par ordinateur open source. Elle contient un grand nombre d'algorithmes et de fonctions de vision par ordinateur, qui peuvent aider les développeurs à créer rapidement des images. et applications liées au traitement vidéo. Avant d'utiliser OpenCV, nous devons d'abord l'installer. Heureusement, Python fournit un outil puissant pour gérer les bibliothèques tierces.

analyse d'un exemple de pyramide d'images python OpenCV analyse d'un exemple de pyramide d'images python OpenCV May 11, 2023 pm 08:40 PM

1. Base théorique de la pyramide d'images La pyramide d'images est une sorte d'expression d'images à plusieurs échelles. Il s'agit d'une structure efficace mais conceptuellement simple pour expliquer des images à plusieurs résolutions. Une pyramide d’images est une collection d’images avec des résolutions progressivement inférieures disposées en forme de pyramide et dérivées de la même image originale. Il est obtenu par échantillonnage en aval, et l'échantillonnage n'est arrêté que lorsqu'une certaine condition de terminaison est atteinte. Nous comparons les images couche par couche à une pyramide. Plus le niveau est élevé, plus l'image est petite et plus la résolution est faible. Alors pourquoi faisons-nous une pyramide d’images ? En effet, changer la taille des pixels ne change parfois pas ses caractéristiques. Par exemple, si je vous montre une image de 10 millions de pixels, vous pouvez savoir qu'il y a une personne dedans. Si je vous montre une image de 100 000 pixels, vous pouvez savoir qu'il y a une personne à l'intérieur. peut aussi savoir qu'il y a une personne dedans. Mais contre le plan.

Tutoriel d'installation d'OpenCV : un incontournable pour les utilisateurs de PyCharm Tutoriel d'installation d'OpenCV : un incontournable pour les utilisateurs de PyCharm Feb 22, 2024 pm 09:21 PM

OpenCV est une bibliothèque open source pour la vision par ordinateur et le traitement d'images, largement utilisée dans l'apprentissage automatique, la reconnaissance d'images, le traitement vidéo et d'autres domaines. Lors du développement à l'aide d'OpenCV, afin de mieux déboguer et exécuter des programmes, de nombreux développeurs choisissent d'utiliser PyCharm, un puissant environnement de développement intégré Python. Cet article fournira aux utilisateurs de PyCharm un didacticiel d'installation pour OpenCV, avec des exemples de code spécifiques. Première étape : installer Python Tout d’abord, assurez-vous que Python est installé

Comment utiliser Python+OpenCV pour obtenir l'effet de faire glisser des carrés virtuels Comment utiliser Python+OpenCV pour obtenir l'effet de faire glisser des carrés virtuels May 15, 2023 pm 07:22 PM

1. Effet du projet 2. Processus de base 1. openCV lit le flux vidéo et dessine un rectangle sur chaque image de l'image. 2. Utilisez Mediapipe pour obtenir les coordonnées des points clés des doigts. 3. En fonction de la position des coordonnées du doigt et de la position des coordonnées du rectangle, déterminez si la pointe du doigt est sur le rectangle. Si c'est le cas, le rectangle suivra le mouvement du doigt. 3. Préparation de l'environnement du processus de code : python:3.8.8opencv:4.2.0.32mediapipe:0.8.10.1 Remarque : 1. Si la version opencv est trop élevée ou trop basse, certains problèmes peuvent survenir, tels que la caméra ne peut pas être ouverte, des plantages , etc. La version python affecte les versions facultatives d'opencv. 2. pipinstallmediapipe peut provoquer une opération

Comment tracer des lignes avec des flèches dans OpenCV en utilisant Java ? Comment tracer des lignes avec des flèches dans OpenCV en utilisant Java ? Aug 20, 2023 pm 02:41 PM

Le package org.opencv.imgproc de la bibliothèque JavaOpenCV contient une classe appelée Imgproc qui fournit diverses méthodes pour traiter les images d'entrée. Il fournit un ensemble de méthodes pour dessiner des formes géométriques sur des images. Pour tracer une ligne fléchée, vous devez appeler la méthode arrowedLine() de cette classe. La méthode accepte les paramètres suivants : un objet Mat représentant l'image sur laquelle la ligne doit être tracée. Un objet Point représentant deux points entre des lignes. draw. Un objet scalaire représentant la couleur de la ligne. (BGR) Un entier représentant l'épaisseur de la ligne (par défaut : 1). Exemple importorg.opencv.core.Core;importation

Comment implémenter le traitement vidéo à l'aide de PHP et de la bibliothèque OpenCV ? Comment implémenter le traitement vidéo à l'aide de PHP et de la bibliothèque OpenCV ? Jul 17, 2023 pm 09:13 PM

Comment implémenter le traitement vidéo à l'aide de PHP et de la bibliothèque OpenCV ? Résumé : Dans les applications technologiques modernes, le traitement vidéo est devenu une technologie importante. Cet article expliquera comment utiliser le langage de programmation PHP combiné à la bibliothèque OpenCV pour implémenter certaines fonctions de traitement vidéo de base et joindra des exemples de code correspondants. Mots clés : PHP, OpenCV, traitement vidéo, exemples de code Introduction : Avec le développement d'Internet et la popularité des smartphones, le contenu vidéo est devenu un élément indispensable de la vie des gens. Cependant, pour réaliser le montage vidéo et

En Python, les images peuvent être segmentées et extraites à l'aide des méthodes de la bibliothèque OpenCV. En Python, les images peuvent être segmentées et extraites à l'aide des méthodes de la bibliothèque OpenCV. May 08, 2023 pm 10:55 PM

Segmentation et extraction d'images : les objets de premier plan sont segmentés ou extraits des images en tant qu'images cibles. L'arrière-plan lui-même n'est pas intéressé. L'algorithme du bassin versant et l'algorithme GrabCut segmentent et extraient l'image. Utilisez l'algorithme de bassin versant pour réaliser la segmentation et l'extraction d'images. L'algorithme de bassin versant compare de manière éclatante les images aux surfaces géographiques du terrain pour réaliser la segmentation d'image. Principe de l'algorithme Toute image en niveaux de gris peut être considérée comme une surface de terrain géographique. Les zones avec des valeurs d'échelle de gris élevées peuvent être considérées comme des sommets de montagne, et les zones avec des valeurs d'échelle de gris faibles peuvent être considérées comme des vallées. L'image de gauche est l'image originale et l'image de droite est la « surface topographique » correspondante. Ce processus sépare l'image en deux ensembles distincts : les bassins versants et les lignes de partage des eaux. Le barrage que nous avons construit est la ligne de partage des eaux, c'est-à-dire l'image originale

Débutants, veuillez lire : Tutoriel détaillé sur la façon d'installer OpenCV dans PyCharm Débutants, veuillez lire : Tutoriel détaillé sur la façon d'installer OpenCV dans PyCharm Feb 26, 2024 pm 03:24 PM

PyCharm est un puissant environnement de développement intégré (IDE) Python développé par JetBrains. Il fournit une multitude de fonctions et d'outils pour aider les développeurs Python à écrire du code, à déboguer des programmes et à gérer des projets. En utilisant OpenCV, une puissante bibliothèque de vision par ordinateur, dans PyCharm, vous pouvez facilement effectuer un traitement d'image, un traitement vidéo et d'autres tâches. Cet article détaillera les étapes d'installation et de configuration d'OpenCV dans PyCharm et fournira des exemples de code spécifiques. 1.Un

See all articles