Analyse des paramètres de la fonction cv2.inRange en python

 Cet article vise principalement à clarifier les réglages détaillés des paramètres à valeur limitée lowerbarray et upperbarray.

L'article conclut enfin que les trois paramètres de la valeur limite sont les valeurs de [B, G, R] correspondant à la couleur.

Corps de fonction :

resultarray = cv2.inRange(src, lowerbarray, upperbarray[, dst]    ) ->    dst

1. Analyse des paramètres de fonction

Tableau d'images enregistré = nom de la fonction (image source, tableau de limite inférieure de couleur, tableau de limite supérieure de couleur [tableau de sortie (généralement non utilisé)])

L'image de sortie est une image binaire avec seulement deux couleurs : noir et blanc.

Documentation officielle

 Hypothèse : la limite supérieure de couleur est de 180, la limite inférieure de couleur est de 50 et les couleurs de l'image sont de 40, 80, 200.

     Couleur de l'image 40 < Limite inférieure de couleur 50 < Couleur de l'image 80 < Limite supérieure de couleur 180 < Couleur de l'image 200

     Si la couleur de l'image passe de 40 à 0, elle sera noire. Si la couleur de l'image passe de 80 à 255, elle sera blanche. Si la couleur de l'image passe de 200 à 0, elle sera noire.

     Les valeurs entre la limite inférieure de couleur et la limite supérieure de couleur sont modifiées à 255 et le reste est modifié à 0. 

2. Vérification des codes

Utilisez d'abord l'outil de dessin pour créer une nouvelle image RVB monochrome rouge R:254, G:0, B:0

Le code est

import  numpy as np #导入numpy创建数组
import cv2 #导入OPENCV
img = cv2.imread('2.bmp') #读取图片
print(img) #打印图片数组
low1 = np.array([0, 0, 0]) #设置第一组对比数组下限
low2 = np.array([0, 0, 0]) #设置第二组对比数组下限
up1 = np.array([0, 0, 255]) #设置第一组对比数组上限
up2 = np.array([0, 0, 254]) #设置第二组对比数组上限
img2 = cv2.inRange(img, low1, up1) #生成第一张对比图片
img3 = cv2.inRange(img, low2, up2) #生成第二张对比图片
cv2.imshow("img", img)  #显示原图
cv2.imshow("img2", img2) #显示第一张对比图片
cv2.imshow("img3", img3) #显示第二张对比图片
cv2.waitKey(0) #图片显示等待

Le mode couleur de l'image importée par CV2 est BGR, donc la limite supérieure de couleur est définie ici sur B:0 G:0 R:255/254.

 (L'image ici analyse le mode BGR, non converti en mode HSV)

Ensuite, nous exécutons le code pour afficher l'image générée

Le tableau BGR de l’image originale est                                                     

Générer un tableau de comparaison

 

Image originale monochrome

 B:0G:0R:254

La limite inférieure du premier groupe de couleurs est : B:0 G:0 R:0

La limite supérieure du premier groupe de couleurs est : B:0 G:0 R:255

Limite inférieure : 0 < Couleur de l'image : 254 < Limite supérieure : 255

La couleur de l'image se situe dans une plage limitée

Réglez la couleur de l'image sur 255 (blanc)

inRange convertit les images en valeurs binaires (uniquement les couleurs noir et blanc)

La limite inférieure du deuxième groupe de couleurs est : B:0 G:0 R:0

La limite supérieure du deuxième groupe de couleurs est : B:0 G:0 R:254

Limite inférieure : 0 < Limite supérieure : 254 <= Couleur de l'image : 254

La couleur de l'image n'est pas dans la plage limitée

Réglez la couleur de l'image sur 0 (noir)

inRange convertit les images en valeurs binaires (uniquement les couleurs noir et blanc)

Modifiez ensuite l'image en un mélange de deux couleurs et une image en couleur unie R:253 G:252 B:0

 Comparez d'abord avec le code d'origine

Nouvelle gamme de couleurs BGR

 Nouveau tableau de comparaison des couleurs

On peut voir que la valeur limite de couleur BGR doit être respectée en même temps avant que la valeur de couleur de l'image originale ne soit modifiée à 255 (blanc).

Ci-dessous le code pour modifier la valeur limite

import  numpy as np #导入numpy创建数组
import cv2 #导入OPENCV
img = cv2.imread('2.bmp') #读取图片
print(img) #打印图片数组
low1 = np.array([0, 0, 0]) #设置第一组对比数组下限
low2 = np.array([0, 0, 0]) #设置第二组对比数组下限
up1 = np.array([0, 251, 253]) #设置第一组对比数组上限 这里修改B:0 G:251 R:253
up2 = np.array([0, 252, 253]) #设置第二组对比数组上限 这里修改B:0 G:252 R:253
img2 = cv2.inRange(img, low1, up1) #生成第一张对比图片
img3 = cv2.inRange(img, low2, up2) #生成第二张对比图片
cv2.imshow("img", img)  #显示原图
cv2.imshow("img2", img2) #显示第一张对比图片
cv2.imshow("img3", img3) #显示第二张对比图片
cv2.waitKey(0) #图片显示等待

La valeur de couleur sera modifiée à 255 (blanc) uniquement lorsque la valeur limite sera modifiée et que la valeur limite BGR sera atteinte en même temps.

Nouvelle image originale de valeur de couleur

B:0 G:252 R:253

La limite inférieure du premier groupe de couleurs est : B:0 G:0 R:0

La limite supérieure du premier groupe de couleurs est : B:0 G:251 R:253

R limite inférieure : 0<couleur de l'image : 253 <=limite supérieure : 253

Limite inférieure G : 0<limite supérieure : 253<couleur de l'image : 252

Ne répond pas aux deux restrictions de couleur

La couleur de l'image est dans une plage illimitée

Réglez la couleur de l'image sur 0 (noir)

La limite inférieure du deuxième groupe de couleurs est : B:0 G:0 R:0

La limite supérieure du deuxième groupe de couleurs est : B:0 G:252 R:253

R limite inférieure : 0 < couleur de l'image : 253 <= limite supérieure : 253

G limite inférieure : 0<couleur de l'image : 252<=limite supérieure : 252

Respectez les deux restrictions de couleur

La couleur de l'image se situe dans une plage limitée

Réglez la couleur de l'image sur 255 (blanc)

Ici, l'analyse simple des limitations de couleurs est terminée

Créez une nouvelle image de couleurs mélangées et sélectionnez la couleur souhaitée

La valeur de couleur jaune que vous souhaitez extraire est B:0 G:242 R:254 et la valeur limite est définie sur : B:0-255 G:178-243 R:36-254.

La valeur limitée du bleu B est de 0 à 255, car la valeur de B est le paramètre clair et foncé du jaune, foncé 0<----B---->255 clair

code affiché comme ci-dessous

import  numpy as np #导入numpy创建数组
import cv2 #导入OPENCV
img = cv2.imread('2.bmp') #读取图片
print(img) #打印图片数组
low1 = np.array([0, 178, 36]) #设置颜色BGR下限
up1 = np.array([255, 243, 254]) #设置颜色BGR上限
img2 = cv2.inRange(img, low1, up1) #生成截取图片
cv2.imshow("img", img)  #显示原图
cv2.imshow("img2", img2) #显示截取图片
cv2.waitKey(0) #图片显示等待

 Générer des captures d'écran

 L'image montre qu'une image très approximative a été prise car la valeur limite a été réglée trop précisément.

import  numpy as np #导入numpy创建数组
import cv2 #导入OPENCV
img = cv2.imread('2.bmp') #读取图片
print(img) #打印图片数组
low1 = np.array([0, 178, 36]) #设置颜色BGR下限
up1 = np.array([65, 255, 255]) #设置颜色BGR上限 修改B:65 G:255 R:255
img2 = cv2.inRange(img, low1, up1) #生成截取图片
cv2.imshow("img", img)  #显示原图
cv2.imshow("img2", img2) #显示截取图片
cv2.waitKey(0) #图片显示等待

 Générer des images après modification

C'est mieux, vous pouvez modifier la valeur limite en fonction de vos propres besoins. 

 Cet article vise principalement à clarifier les paramètres détaillés des paramètres à valeur limitée lowerarray et upperarray.

 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_40071463/article/details/126672539
conseillé
Classement