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()
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()
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
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)
res=cv2.resize(image,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
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]]]])
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('test.png',1) rows,cols,channel=img.shape M=np.float32([[1,0,100],[0,1,50]]) dst=cv2.warpAffine(img,M,(cols,rows)) cv2.imshow('img',dst) cv2.waitKey(0) cv2.destoryALLWindows()
Dans OpenCV, vous devez d'abord construire une matrice de rotation, qui est obtenue via cv2.getRotationMatrix2D.
import cv2 img=cv2.imread('test.png',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('img',dst) cv2.waitKey(0) cv2.destoryALLWindows()
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('test.png') 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('Input') plt.subplot(122),plt.imshow(dst),plt.title('Output') plt.show()
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('test.png') 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('Input') plt.subplot(122),plt.imshow(dst),plt.title('Output') plt.show()
<🎜. >
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('test.png') 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()
Utiliser la version de l'index Numpy :
import cv2 import numpy as np import matplotlib.pyplot as plt image=cv2.imread('pitt1.jpg') rows,cols,ch=image.shape #直接获取 b=img[:,:,0]
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!