Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée des méthodes de fonctionnement de base de Python-OpenCV_python

不言
Libérer: 2018-04-02 16:33:51
original
4373 Les gens l'ont consulté

L'éditeur suivant partagera avec vous une explication détaillée des méthodes de fonctionnement de base de Python-OpenCV. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde. Suivons l'éditeur pour jeter un oeil

Attributs de base

cv2.imread (nom du fichier, attributs) lire l'image

Attribut : Spécifiez comment l'image est lue à partir du fichier

cv2.IMREAD_COLOR : Lecture en images couleur, paramètres par défaut, Opencv lit les images couleur en mode BGR ! ! ! Remarque

cv2.IMREAD_GRAYSCALE : Lire dans les images en niveaux de gris.

cv2.imshow (nom de la fenêtre, fichier image) Afficher l'image

Peut créer plusieurs fenêtres

fonction de liaison clavier cv2.waitKey()

La fonction attend un nombre spécifique de millisecondes pour voir s'il y a une saisie depuis le clavier.

cv2.namedWindow (nom de la fenêtre, attributs) Créer une fenêtre

Attributs : Spécifier le mode de taille de la fenêtre

cv2.WINDOW_AUTOSIZE : Automatiquement basé sur l'image size Créer la taille

cv2.WINDOW_NORMAL : la taille de la fenêtre peut être ajustée

cv2.destoryAllWindows(nom de la fenêtre) Supprimer toute fenêtre créée

Exemple de code :

import cv2
 img=cv2.imread('test.py',cv2.IMREAD_COLOR)
 cv2.namedWindow('image',cv2.WINDOW_NORMAL)
 cv2.imshow('image',img)
 cv2.waitKey(0)
 cv2.destoryAllWindows()
Copier après la connexion

cv2.imwrite (enregistrer le nom de l'image, besoin d'enregistrer l'image) Enregistrer l'image

Exemple de code :

 import cv2
 img=cv2.imread('test.png',0)
 cv2.imshow('image',img)
 k=cv2.waitKey(0)
 if k==27: #等待 ESC 键
  cv2.destoryAllWindows()
 elif k==ord('s') #等待 's' 键来保存和退出
  cv2.imwrite('messigray.png',img)
  cv2.destoryAllWindows()
Copier après la connexion

Quelques opérations sur les images

0x01. 🎜 >

import cv2
img=img.imread('test.png')
print img.shape
#(768,1024,3)
print img.size
#2359296 768*1024*3
print img.dtype
#uint8
Copier après la connexion

0x02. Texte de sortie

Lors du traitement des images, transférez directement certaines informations. Sortie sur l'image sous forme de texte

cv2.putText (nom de l'image, texte, coordonnées, couleur du texte)

Zoom image

<🎜. > Réaliser et sauvegarder des images, opération courante lors de l'utilisation d'OpenCV. cv2.resize() prend en charge une variété d'algorithmes d'interpolation. Par défaut, cv2.INTER_LINEAR est utilisé. Le plus approprié pour la réduction est cv2.INTER_AREA. Le plus approprié pour l'agrandissement est cv2.INTER_CUBIC ou cv2.INTER_LINEAR.

Ou :
res=cv2.resize(image,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
Copier après la connexion

Aucun ici ne devrait être La taille de l'image de sortie, car le facteur d'échelle
res=cv2.resize(image,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
Copier après la connexion

0x04 est défini plus tard. Traduction de l'image

<. 🎜>

La traduction consiste à changer la position de l'image. Si vous souhaitez vous déplacer dans la direction (x, y) et que la distance de mouvement est (tx, ty), vous devez construire une matrice de décalage M.

cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
Copier après la connexion

Par exemple, faites un panoramique sur l'image (100,50)

Où (cols, rows) représente la taille de l'image de sortie, M est la matrice de transformation, 100 représente le décalage de x et 50 représente le décalage de y, en pixels.

 import cv2
 img=cv2.imread(&#39;test.png&#39;,1)
 rows,cols,channel=img.shape
 M=np.float32([[1,0,100],[0,1,50]])
 dst=cv2.warpAffine(img,M,(cols,rows))
 cv2.imshow(&#39;img&#39;,dst)
 cv2.waitKey(0)
 cv2.destoryALLWindows()
Copier après la connexion

0x05. Rotation de l'image

Dans OpenCV, vous devez d'abord construire une matrice de rotation, qui est obtenue via cv2.getRotationMatrix2D.

import cv2
img=cv2.imread(&#39;test.png&#39;,0)
rows,cols=img.shape
#第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
M=cv2.getRotationMatrix2D((cols/2,rows/2),45,0.6)
#第三个参数为图像的尺寸中心
dst=cv2.warpAffine(img,M,(2*cols,2*rows))
cv2.imshow(&#39;img&#39;,dst)
cv2.waitKey(0)
cv2.destoryALLWindows()
Copier après la connexion
0x06>Transformation affine

En transformation affine, Toutes les droites parallèles. dans l'image originale sont également parallèles dans l'image résultante. Pour créer la matrice de décalage, vous devez trouver trois points dans l'image d'origine et leurs positions dans l'image de sortie. Ensuite, OpenCV fournit cv2.getAffineTransform pour créer une matrice 2*3, et transmet enfin la matrice à la fonction cv2.warpAffine.

import cv2
import matplotlib.pyplot as plt
import numpy as np
img=cv2.imread(&#39;test.png&#39;)
rows,cols,ch=img.shape
pts1=np.float32([[50,50],[200,50],[50,200]])
pts2=np.float32([[10,100],[200,50],[100,250]])
M=cv2.getAffineTransform(pts1,pts2)
dst=cv2.warpAffine(img,M,(cols,rows))
plt.subplot(121),plt.imshow(img),plt.title(&#39;Input&#39;)
plt.subplot(122),plt.imshow(dst),plt.title(&#39;Output&#39;)
plt.show()
Copier après la connexion

0x07. 🎜>La transformation de perspective nécessite une matrice de transformation 3*3. Assurez-vous que la ligne droite est toujours droite avant et après la transformation. La construction de cette matrice nécessite de trouver 4 points dans l'image d'entrée et leurs positions correspondantes dans l'image de sortie. Trois de ces quatre points ne peuvent pas être colinéaires. La matrice de transformation OpenCV fournit la construction cv2.getPerspectiveTransform(). Passez ensuite la matrice dans la fonction cv2.warpPerspective.

0x09. Image des régions d'intérêt
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread(&#39;test.png&#39;)
rows,cols,ch=img.shape
pts1=np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2=np.float32([[0,0],[300,0],[0,300],[300,300]])
M=cv2.getPerspectiveTransform(pts1,pts2)
dst=cv2.warpPerspective(img,M,(300,300))
plt.subplot(121),plt.imshow(img),plt.title(&#39;Input&#39;)
plt.subplot(122),plt.imshow(dst),plt.title(&#39;Output&#39;)
plt.show()
Copier après la connexion

<🎜. >

Parfois il est nécessaire d'opérer sur une zone précise d'une image, et le ROI est obtenu grâce à l'index Numpy.

0x10. Traitement de division/fusion de canaux

import cv2
import numpy as np
import matplotlib.pyplot as plt

image=cv2.imread(&#39;test.png&#39;)
rows,cols,ch=image.shape
tall=image[0:100,300:700]
image[0:100,600:1000]=tallall
cv2.imshow("image",image)
cv2.waitKey(0)
cv2.destoryALLWindows()
Copier après la connexion

Parfois, il est nécessaire de faire fonctionner les trois chaînes BGR séparément. À l’heure actuelle, le BGR doit être divisé en un seul canal. Dans le même temps, il est parfois nécessaire de fusionner des images de canaux indépendants dans une image BGR.

Utiliser la version de fonction de la bibliothèque OpenCV

Utiliser la version de l'index Numpy :

import cv2
import numpy as np
import matplotlib.pyplot as plt

image=cv2.imread(&#39;pitt1.jpg&#39;)
rows,cols,ch=image.shape
#直接获取
b=img[:,:,0]
Copier après la connexion


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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!