Utilisez un langage de script pour une vie C ++ confortable-OpenCV-Port Python vers C ++ -

OpenCV-Python est un environnement facile à développer pour développer des algorithmes utilisant OpenCV. Voici une note qui vous donnera un indice lors du portage de l'algorithme qui y est développé en C ++.

Pour OpenCV-Python: Utilisation du type numpy.array → Remplacement avec le type cv :: Mat méthode spécifique au type numpy.array Remplacement par la méthode de type cv :: Mat.

Ce type de réécriture est facile. Même si vous n'avez pas assez d'expérience pour créer des algorithmes de traitement d'image, vous pouvez réécrire le code OpenCV-Python en OpenCV C ++ si vous avez de l'expérience avec C ++.

numpy.array cv::Mat point important
a = np.ones((h,w), dtype=np.uint8) cv::Mat a=cv::Mat::ones(cv::Size(w, h), cv::CV_8U);
shape size la forme est[h, w, channel]Commande, ou[h, w]
img.shape cv::Size(img.rows, img.cols)
img = cv2.imread("lena.png "); imgRGB=img[:, :, ::-1] cv::Mat img = cv::imread("lena.png "); cv2.imread()Est dans l'ordre de BGR
import pylab as plt; plt.imshow(imgRGB) cv::imshow("title", img); matplotlib imshow()Est l'imshow de Matlab()Proche de
a[:, :] = 0 a.setTo(0); Pour les images couleur un[:, :, :] = 0 。setTo()L'argument est une constante
a[b>127] = 255 a.setTo(255, b > 127);
a = b+0 b.copyTo(a); Dans numpy juste un=Si b, alors a est un alias pour b, et la substance est la même.
a[c==d] = b[c==d] b.copyTo(a, c==d);
a = np.array(b, dtype=np.float32)/255.0 b.convertTo(a, CV_32F, 1.0/255);

Exemple de code OpenCV-Python

python


# -*- coding: utf-8 -*-

import cv2
import numpy as np
img = cv2.imread("lena.png ", 0)

b = np.zeros(img.shape[:2], dtype=np.uint8)
b[img > 128] = 255
cv2.imwrite("junk.png ", b)

Exemple de code source C ++ réécrit

python


#include <opencv2/opencv.hpp>
int main(int argc, char* argv[]) {
    cv::Mat img= cv::imread("lena.png ", 0);
    cv::Mat b = cv::Mat::zeros(cv::Size(img.rows, img.cols), CV_8U);
    b.setTo(255, img>127);
    cv::imwrite("junk_cpp.png ", b);
}

Image du résultat de l'exécution junk.png


Fonctions utiles dans numpy numpy.rot90(m, k=1, axes=(0, 1) (https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.rot90.html)

Recommended Posts

Utilisez un langage de script pour une vie C ++ confortable-OpenCV-Port Python vers C ++ -
Utilisez un langage de script pour une vie confortable en C ++
Utilisez un langage de script pour une vie confortable en C ++ 3-Laissez le graphique à matplotlib-
Utilisons un langage de script pour une implémentation C ++ confortable après vérification avec python
Utilisons un langage de script pour une vie C ++ confortable 2 Générer automatiquement une source C ++
Utilisons le langage de script pour une vie confortable en C ++ 4 - Utilisons la propre bibliothèque de C ++ à partir du langage de script -
Utilisons un langage de script pour une vie confortable en C ++ 6-Que diriez-vous de développer un programme en tant que bibliothèque pour Python?
Utilisez un langage de script pour une vie C ++ confortable 5 - Utilisez l'environnement intégré de Spyder pour vérifier les données numériques -
[Introduction à python] Introduction rapide à Python pour les programmeurs C ++ occupés
Introduction à Protobuf-c (langage C ⇔ Python)
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
[Python] Organisation de l'utilisation des instructions
Comment utiliser "deque" pour les données Python
Une introduction à Python pour les programmeurs en langage C
J'ai créé un conteneur Docker pour utiliser JUMAN ++, KNP, python (pour pyKNP).
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 9 Utilisation à partir du langage C
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 3 Écrire dans un fichier
[Python] Il était très pratique d'utiliser la classe Python pour le programme ROS.
Porté un compilateur de langage homebrew naïf sur Python
Écriture de journaux dans un fichier CSV (Python, langage C)
Envelopper C ++ avec Cython pour une utilisation à partir de Python
J'ai fait un module en langage C qui filtre les images chargées par Python
Langage C pour voir et se souvenir de la partie 3 Appelez le langage C depuis Python (argument) c = a + b
Créer un ensemble de données d'images à utiliser pour la formation
[Pour les débutants] Comment utiliser la commande say avec python!
Comment utiliser Python Kivy ① ~ Bases du langage Kv ~
[Python] Comment appeler une fonction de c depuis python (édition ctypes)
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 7 Comment créer un module
Comment utiliser pip, un système de gestion de paquets indispensable pour utiliser Python
[Python] Je souhaite utiliser uniquement l'index lors de la mise en boucle d'une liste avec une instruction for
Un script python qui souhaite utiliser l'heure de démarrage / fin de Mac pour la gestion des présences
Appeler des fonctions du langage C depuis Python pour échanger des tableaux multidimensionnels
[C / C ++] Passez la valeur calculée en C / C ++ à une fonction python pour exécuter le processus et utilisez cette valeur en C / C ++.
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 4 Utiliser l'interface graphique
python3: Comment utiliser la bouteille (2)
Une route vers Python intermédiaire
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
[Python] Utiliser une séquence de chaînes
[Python] Comment utiliser la liste 1
Comment utiliser la méthode __call__ dans la classe Python
Remarques sur l'intégration du langage de script dans les scripts bash
Remarque 2 pour intégrer le langage de script dans un script bash
[python] Remarques lors de la tentative d'utilisation de numpy avec Cython
Comment implémenter provisoirement une barre de progression dans un langage de script
Un moyen simple d'éviter plusieurs boucles for en Python
Comment utiliser Python Argparse
Comment définir plusieurs variables dans une instruction Python for
Comment créer un package Python (écrit pour un stagiaire)
Comment utiliser l'apprentissage automatique pour le travail? 03_Procédure de codage Python
Python: comment utiliser pydub
[Python] Comment utiliser checkio
Je ne savais pas comment utiliser l'instruction [python] for
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image par eux-mêmes
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
[Python] Comment utiliser input ()
Essayez de sélectionner une langue
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python