A maneira correta de abrir o retoque com Python + opencv

prefácio

As imagens são o formato de mídia mais comum além do texto em aplicativos da web.

As imagens estáticas populares da Web são JPEG, PNG, ICO, BMP, etc. Os filmes são principalmente no formato GIF.

insira a descrição da imagem aqui

Para economizar o tráfego de transmissão de imagens, grandes empresas de Internet também personalizarão imagens em formatos especiais, sendo o formato WEBP um representante.

Além da análise de dados, o Python também é muito útil para o processamento de imagens.

Usando Python para processamento de imagens, a biblioteca mais famosa é a PIL (Python Imaging Library), que suporta o Python3 mais recente e possui muitos recursos novos, Pillow

Também se tornou uma das ferramentas essenciais para o processamento de imagens Python.

No entanto, a biblioteca que vamos usar hoje é o OpenCV Python, e estudaremos PIL na próxima edição.

Este artigo apresenta principalmente o Python+OpenCV para realizar a binarização de imagens, para ajudá-lo a usar melhor o python para processar imagens, e amigos interessados ​​podem aprender sobre isso.

Preparação da biblioteca de processamento de imagens

OpenCV Python para processar imagens, o processo de instalação é o seguinte:

pip install opencv-python

insira a descrição da imagem aqui

carregamento de imagem

Vamos abrir um teste de imagem primeiro. A imagem pode ser carregada com sucesso da seguinte maneira para indicar que foi

OpenCV-Python instalado com sucesso

insira a descrição da imagem aqui

Zoom de imagem

Na premissa de manter os detalhes da imagem inalterados, a imagem pode ser ampliada ou reduzida.

Onde img é o objeto da imagem e img.shape representa a forma e o tamanho da imagem, que são altura, largura e número de canais.

# 获取图片尺寸
img = cv2.imread("./pic1.jpg")
h, w, ch = img.shape
print(h, w, ch)
  
'''
1240 960 3
'''

Nosso pensamento é o seguinte:

O programa lê o arquivo de imagem e usa o método cv2.resize para dimensionar a imagem para metade do tamanho.

Python学习交流Q群:906715085###
# 获取图片尺寸
img = cv2.imread("./pic1.jpg")
h, w, ch = img.shape
print('原图尺寸:', h, w, ch)

new_h = int(h / 2)
new_w = int(w / 2)
res = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR)
cv2.imwrite('./half_pic1.jpg', res)

# 获取图片尺寸
img = cv2.imread("./half_pic1.jpg")
h, w, ch = img.shape
print('缩半原图尺寸:', h, w, ch)
    
'''
原图尺寸:1240 960 3
缩半原图尺寸:620 480 3
'''

O efeito real é o seguinte:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

corte de imagem

Retire a forma parcial da foto. Aqui nós pegamos a imagem da senhora e removemos as bordas extras na frente, atrás, esquerda e direita de acordo com suas necessidades.

Python学习交流Q群:906715085###
img = cv2.imread("./pic1.jpg")
h, w, ch = img.shape
print(h, w, ch)
# (x0,y0) (x1,y1) 矩阵
x0, y0 = 200, 80
x1, y1 = 880, 960
# img 是一个按行扫描的矩阵
res = img[y0:y1, x0:x1]
print('截取后 H,W=', res.shape[:2])
cv2.imwrite('./pic.jpg', res)

'''
1240 960 3
截取后 H,W= (880, 680)
'''

O efeito real é o seguinte:
insira a descrição da imagem aqui

insira a descrição da imagem aqui

combinação de imagens

Empilhe e costure duas ou mais imagens.

Prepare uma imagem original pic1.jpg e uma imagem de marca d'água img.png. O objetivo é colar a marca d'água no canto inferior direito da imagem do retrato.

# 读取原始图片
image = cv2.imread('./pic1.jpg')
(h, w) = image.shape[:2]
print("SOURCE", image.shape)

# 读取水印
imgsy = cv2.imread('./img.png')
(h_sy, w_sy) = imgsy.shape[:2]
print("SHUIYIN", imgsy.shape)

# 定义原图片选区
roi = image[h - h_sy:h, w - w_sy:w]

# 原图片选区和水印区融合,让水印透明
for y in range(h_sy):
    for x in range(w_sy):

        p = imgsy[y, x]
        if (p[0], p[1], p[2]) == (0, 0, 0):
            imgsy[y, x] = roi[y, x]

cv2.imwrite('./shuiyin+roi.png', imgsy)

# 选区范围设定为融合后的水印
image[h - h_sy: h, w - w_sy: w] = imgsy

cv2.imwrite('./pic_sy.jpg', image)

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/xff123456_/article/details/124345782
Recomendado
Clasificación