Código de procesamiento de imagen (para procesar la imagen antes del reconocimiento)

Puntos principales:

  • Resumen de procesamiento de imágenes


1 El código implementa la herramienta varita mágica ps y toma el área con valores de color similares en la imagen

Implementación detallada del código: puede usar las bibliotecas pillow y opencv en python para leer y procesar imágenes. Es necesario convertir la imagen en una matriz de píxeles y luego analizar el valor del color. Los algoritmos de agrupamiento se pueden usar para dividir píxeles en varios grupos de colores y luego analizar su similitud de valor de color para determinar qué grupos se deben fusionar. Después de fusionar los píxeles, conviértalos en imágenes y emita el resultado.

import cv2
from sklearn.cluster import KMeans
from PIL import Image
# 读取图片
img = cv2.imread('image.jpg')

# 转化为RGB模式
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# 将图片转化为像素点的矩阵
pixels = img.reshape((-1, 3))

# 聚类算法
kmeans = KMeans(n_clusters=10)
kmeans.fit(pixels)

# 获取聚类的中心
colors = kmeans.cluster_centers_

# 计算相似度,合并颜色簇
tolerance = 50
merged = []
for i, color in enumerate(colors):
    similar = False
    for j, merged_color in enumerate(merged):
        if abs(color[0] - merged_color[0]) < tolerance \
                and abs(color[1] - merged_color[1]) < tolerance \
                and abs(color[2] - merged_color[2]) < tolerance:
            merged[j] = (
                (color[0] + merged_color[0]) / 2,
                (color[1] + merged_color[1]) / 2,
                (color[2] + merged_color[2]) / 2,
            )
            similar = True
            break
    if not similar:
        merged.append(color)

# 将像素点转化为聚类后的颜色
for i, pixel in enumerate(pixels):
    for j, color in enumerate(colors):
        if abs(pixel[0] - color[0]) < tolerance \
                and abs(pixel[1] - color[1]) < tolerance \
                and abs(pixel[2] - color[2]) < tolerance:
            pixels[i] = merged[j]
            break
# 将像素点转化为图片
new_img = Image.fromarray(pixels.reshape(img.shape))

# 显示结果
new_img.show()

# 保存结果
new_img.save('output.jpg')

  

2 Use el código detallado cv2 para lograr: de acuerdo con el tamaño del valor de píxel amarillo de la imagen, configure los píxeles por encima del valor promedio de la imagen en blanco y configure los píxeles por debajo del valor promedio en negro

import cv2
import numpy as np
# 读取图片,并将像素值转换为HSV颜色空间
img = cv2.imread('image.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 将HSV图像拆分成三个通道
h, s, v = cv2.split(hsv)

# 计算黄色像素点的掩膜
yellow_lower = np.array([20, 100, 100], dtype=np.uint8)
yellow_upper = np.array([30, 255, 255], dtype=np.uint8)
yellow_mask = cv2.inRange(hsv, yellow_lower, yellow_upper)

# 计算图像平均亮度,并将高于平均值的像素点设置为白色,低于平均值的像素点设置为黑色
mean_value = np.mean(v)
white_value = 255
black_value = 0
result = np.zeros_like(v)
result[v > mean_value] = white_value
result[v <= mean_value] = black_value
# 将黄色像素点的掩膜与平均亮度的结果合并
result = cv2.bitwise_and(result, yellow_mask)

# 显示结果
cv2.imshow('Original', img)
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

el efecto esta bien

Supongo que te gusta

Origin blog.csdn.net/March_A/article/details/130305574
Recomendado
Clasificación