Leer, mostrar y escribir imágenes en open-cv

Determine si su entorno virtual pytorch tiene cv2 instalado y puede usarsepip list

1

.Leer la imagen: imread()
el primer parámetro del método imread() se pasa en la ruta del archivo de imagen.Si la lectura es exitosa, el valor de retorno es una matriz de tipo numpy().
No obtener la imagen no generará una excepción, pero obtendrá Ninguno

import cv2
img = cv2.imread('图像的路径')
print('type(img)',img)
#返回值numpy数组

El segundo parámetro tiene 3 modos.

cv2.IMREAD_COLOR	缺省方式,读取图像为BGR 8-bit 格式.  这里需要注意opencv默认通道为BGR模式
cv2.IMREAD_UNCHANGED	图像格式不做任何改变,可用在读取带alpha通道的图片
cv2.IMREAD_GRAYSCALE	读取图像为转换为灰度图
import cv2
img = cv2.imread('图像路径',cv2.IMREAD_UNCHANGED)
print(img.shape)

5125123

Nota: El ancho de la imagen es width = cols = img.shape[1]; la altura de la imagen es altura = filas = img.shape[0]

2

La imagen de visualización imshow()
imshow()se utiliza para mostrar imágenes. El primer parámetro es el nombre de la ventana de visualización. El segundo parámetro es la imread()instancia de imagen generada por el método de espera.
waitKey()Si el parámetro pasado es 0, esperará indefinidamente hasta que se presione cualquier tecla. u otros valores se pasan. El parámetro indica el tiempo de espera, la unidad es ms. Una vez transcurrido el tiempo, la ventana de visualización de la imagen se cerrará.

import sys
import cv2
img = cv2.imread('图片路径',cv2.IMREAD_UNCHANGED)
	if img is None:
		print('没有读入图像')
		sys.exit(-1)#异常终止,退出程序
cv2.imshow('名称',img)
cv2.waitKey(1000)


Se puede utilizar la ventana para cambiar el tamañonameWindow() , resizeWindow()
nameWindow(窗口名称,cv2.WINDOW_NORMAL)llamada ventana
resizeWindow(窗口名称,窗口宽度,窗口高度)de zoom

rows,cols = img.shape[0],img.shape[1]

cv2.namedWindow('lena-down', cv2.WINDOW_NORMAL)
cv2.resizeWindow('lena-down',(int(cols*0.5),int(rows*0.5)))
cv2.imshow('lena-down',img)

cv2.namedWindow('lena-up', cv2.WINDOW_NORMAL) 
cv2.resizeWindow('lena-up',(int(cols*1.3),int(rows*1.3)))
cv2.imshow('lena-up',img)

destruir ventana

cv2.waitKey(0)
cv2.destroyWindow('窗口名称') #关闭单个窗口
cv2.waitKey(0)
cv2.destroyAllWindows()  #关闭所有显示窗口

Un paquete de imágenes de visualización simple

dbg_is_show = False
def show_img(win_name,img,wait_time=0,img_ratio=0.15,is_show=True):
    if is_show is not True:
        return 
    rows = img.shape[0]
    cols = img.shape[1]
    cv2.namedWindow(win_name, cv2.WINDOW_NORMAL )#cv2.WINDOW_AUTOSIZE)
    cv2.resizeWindow(win_name,(int(cols*img_ratio),int(rows*img_ratio)))
    #这里先是图像的宽度,宽度是cols = img.shape[1]
    cv2.imshow(win_name,img)
    cv2.waitKey(wait_time)

3.

imwrite()
imwrite()El primer parámetro al escribir una imagen
es el nombre del archivo que se va a escribir. El sufijo ** del nombre del archivo determina el formato del archivo de imagen. El segundo parámetro es la instancia de la imagen.

cv2.imwrite('lena.bmp',img)    
cv2.imwrite('lena.png',img) 
#将imread()读出的图像实例分别写入为bmp和jpg格式的文件

4.

Los datos leídos por cv2 se muestran directamente con matplotlib, lo que causará confusión de color. La razón es que los datos leídos por cv2 están organizados en formato BGR, y la imagen mostrada por matplotlib debe organizarse en formato RGB, por lo que la lectura es numpy. Es necesario convertir los datos:

import numpy as np
import matplotlib.pyplot as plt
import cv2

img = cv2.imread('lena.jpg')  #opencv读取文件图片 
print('type(img):',type(img))
print(img.shape)
img2=img.copy()
img2[:,:,2]=img[:,:,0]
img2[:,:,0]=img[:,:,2]
plt.imshow(img2) #imshow
plt.show()

Supongo que te gusta

Origin blog.csdn.net/aqiangdeba/article/details/129748902
Recomendado
Clasificación