Maison > Article > développement back-end > Les bases du traitement d'images Python et les fonctions d'introduction d'OpenCV
Cet article vous apporte les bases du traitement d'images Python et les fonctions d'introduction d'OpenCV. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Les images sont composées de pixels, c'est-à-dire de petits carrés dans l'image. Ces petits carrés ont une position claire et des valeurs de couleur sont attribuées. , et la couleur et la position de ces petits carrés déterminent l'apparence de l'image. Le pixel est la plus petite unité d'une image. Chaque image bitmap contient un certain nombre de pixels, qui déterminent la taille de l'image à l'écran.
Les images incluent généralement des images binaires, des images en niveaux de gris et des images en couleur.
1. Image binaire
Image binaire N'importe quel point est soit noir, soit blanc, soit blanc (le pixel est de 255), soit noir (le pixel est de 0). Le processus de conversion d'une image en niveaux de gris en image binaire est souvent mis en œuvre par jugement de parcours séquentiel Si les pixels >= 127, il est défini sur 255, sinon il est défini sur 0.
2. Image en niveaux de gris
En plus du noir et blanc, les images en niveaux de gris ont également du gris, qui combine le gris Le degré est divisé en 256 couleurs différentes et l'image semble plus claire. La conversion d'images couleur en images en niveaux de gris est l'opération de prétraitement la plus élémentaire pour le traitement d'image, qui comprend généralement les méthodes suivantes :
(1) Algorithme à virgule flottante : Gray=R*0.3+G*0.59+B*0.11
( 2) Méthode entière : Gray=(R*30+G*59+B*11)/100
(3) Méthode Shift : Gray=(R*28+G*151+B*77)> ;> 8 ;
(4) Méthode moyenne : Gray=(R+G+B)/3 (Ce programme utilise un algorithme)
(5) Ne prenez que le vert : Gray=G
(6) Pondéré. algorithme de moyenne : selon les caractéristiques de luminosité de la lumière, la formule : R=G=B=R*0,299+G*0,587+B0,144
Après avoir obtenu le gris par l'une des méthodes ci-dessus, remplacez le R , G, B dans le RVB d'origine (R, V, B) avec Gris pour former une nouvelle couleur RVB (Gris, Gris, Gris). Utilisez-le pour remplacer l'image RVB d'origine (R, V, B). Modifiez les valeurs RVB de la matrice de pixels pour convertir l'image couleur en une image en niveaux de gris.
3. Image couleur
L'image couleur est une image RVB, RVB représente les trois couleurs primaires du rouge, du vert et du bleu. , toutes les couleurs de l'ordinateur. Elles sont toutes composées de trois couleurs primaires dans des proportions différentes, c'est-à-dire trois canaux de couleur.
Cet article utilise principalement Python2.7 et OpenCV Pour expliquer, appelez d'abord "pip install opencv-python" pour installer la bibliothèque OpenCV, comme indiqué ci-dessous :
1. image
OpenCV lit les images principalement en appelant les fonctions suivantes :
img = cv2.imread(nom du fichier, [, paramètre])
Paramètre (1) cv2.IMREAD_UNCHANGED (image immuable)
Paramètre (2) cv2.IMREAD_GRAYSCALE (image en niveaux de gris)
Paramètre (3) cv2.IMREAD_COLOR (lire l'image couleur)
Paramètre (4) cv2.COLOR_BGR2RGB (canal d'image BGR converti en RVB)
2. Afficher l'image
La fonction d'appel d'image d'affichage est la suivante :
cv2. .imshow(Nom de la fenêtre, nom de l'image)
3. Attendre la fenêtre
La fonction d'appel est la suivante :
cv2.waitKey(delay)
La fonction de liaison du clavier a un paramètre, indiquant le nombre de millisecondes à attendre. Elle attendra un nombre spécifique de millisecondes pour voir s'il y a une entrée du clavier, et la valeur de retour est une valeur ASCII. Si son paramètre est 0, cela signifie attendre indéfiniment la saisie au clavier ; le paramètre >0 signifie attendre le délai en millisecondes ; le paramètre
4. Supprimer toutes les fenêtres
Appelez la fonction comme suit :
cv2.destroyAllWindows() Supprimez toutes les fenêtres
cv2.destroyWindows() supprime la fenêtre spécifiée
5. Écrivez l'image
Appelez la fonction comme suit :
retval = cv2.imwrite(adresse du fichier, nom du fichier)
Le code suivant lit l'image, l'affiche et l'enregistre.
# -*- coding:utf-8 -*-import cv2 #读取图片 img = cv2.imread("test.jpg") #显示图像 cv2.imshow("Demo", img) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows() #写入图像 cv2.imwrite("testyxz.jpg", img)
Le résultat de sortie est tel qu'indiqué dans la figure ci-dessous, et une image nommée "testyxz.jpg" est enregistrée dans le dossier.
S'il n'y a pas de fonction watiKey(0) dans le code, le résultat de l'exécution est le suivant :
同时
可以对代码进行升级,如下所示:
#无限期等待输入 k=cv2.waitKey(0) #如果输入ESC退出 if k==27: cv2.destroyAllWindows()
1.读取像素
灰度图像直接返回灰度值,彩色图像则返回B、G、R三个分量。注意OpenCV读取图像是BGR存储显示,需要转换为RGB再进行图像处理。
灰度图像:返回值 = 图像(位置参数)
eg: test=img[88,42]
彩色图像:返回值 = 图像[位置元素, 0 | 1 | 2 ] 获取BGR三个通道像素
eg: blue=img[88,142,0] green=img[88,142,1] red=img[88,142,2]
2.修改图像
修改图像如果是灰度图像则直接赋值新像素即可,彩色图像依次给三个值赋值即可。
灰度图像:
img[88,142] = 255
彩色图像:
img[88,142, 0] = 255
img[88,142, 1] = 255
img[88,142, 2] = 255
彩色图像:方法二
img[88,142] = [255, 255, 255]
下面代码是获取像素及修改的操作。
# -*- coding:utf-8 -*-import cv2 #读取图片 img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED) test = img[88,142]print test img[88,142] = [255, 255, 255]print test #分别获取BGR通道像素 blue = img[88,142,0]print blue green = img[88,142,1]print green red = img[88,142,2]print red #显示图像 cv2.imshow("Demo", img) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows() #写入图像 cv2.imwrite("testyxz.jpg", img)
输出结果如下所示:
[158 107 64]
[255 255 255]
255
255
255
下面代码是将行为100到200、列150到250的像素区域设置为白色。
# -*- coding:utf-8 -*-import cv2 #读取图片 img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED) #该区域设置为白色 img[100:200, 150:250] = [255,255,255] #显示图像 cv2.imshow("Demo", img) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows() #写入图像 cv2.imwrite("testyxz.jpg", img)
运行结果如下图所示:
相关推荐:
Python零基础入门之八lambda的表达式和filter、map内置函数
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!