Maison  >  Article  >  développement back-end  >  Les bases du traitement d'images Python et les fonctions d'introduction d'OpenCV

Les bases du traitement d'images Python et les fonctions d'introduction d'OpenCV

不言
不言original
2018-09-08 17:28:143436parcourir

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.

1. Connaissance de base des images

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 bases du traitement dimages Python et les fonctions dintroduction dOpenCV

Les images incluent généralement des images binaires, des images en niveaux de gris et des images en couleur.


Les bases du traitement dimages Python et les fonctions dintroduction dOpenCV


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.


Les bases du traitement dimages Python et les fonctions dintroduction dOpenCV

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.

Les bases du traitement dimages Python et les fonctions dintroduction dOpenCV

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.


Les bases du traitement dimages Python et les fonctions dintroduction dOpenCV


2. Lecture et écriture d'images OpenCV

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 :

Les bases du traitement dimages Python et les fonctions dintroduction dOpenCV

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.

Les bases du traitement dimages Python et les fonctions dintroduction dOpenCV


S'il n'y a pas de fonction watiKey(0) dans le code, le résultat de l'exécution est le suivant :

Les bases du traitement dimages Python et les fonctions dintroduction dOpenCV

同时
可以对代码进行升级,如下所示:

#无限期等待输入
k=cv2.waitKey(0)
#如果输入ESC退出
if k==27:
    cv2.destroyAllWindows()

三.OpenCV像素处理

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)

运行结果如下图所示:

Les bases du traitement dimages Python et les fonctions dintroduction dOpenCV

相关推荐:

Python编程中使用Pillow来处理图像的基础教程

Python零基础入门之八lambda的表达式和filter、map内置函数

Python基于opencv的图像压缩算法实例分析

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:
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