Revisión clave de "Tecnología y aplicaciones de visión por computadora"

Índice de contenidos de los artículos de la serie.

"Tecnología y aplicaciones de visión por computadora" ----- Capítulo 2 Conceptos básicos del procesamiento de imágenes

"Tecnología y aplicaciones de visión por computadora" ----- Capítulo 3 Interfaz gráfica de usuario

"Tecnología y aplicaciones de visión por computadora" ----- Capítulo 4 Transformación de imágenes

"Tecnología y aplicaciones de visión por computadora" ----- Capítulo 5 Bordes y contornos

"Tecnología y aplicaciones de visión por computadora" ----- Capítulo 6 Bordes y contornos

"Tecnología y aplicaciones de visión por computadora" ----- Capítulo 7 Bordes y contornos

"Tecnología y aplicaciones de visión por computadora" ----- Revisión clave



Prefacio


1. Puntos clave a dominar

Complete los espacios en blanco (15 preguntas), juzgue (10 preguntas) y respuesta corta (1 pregunta), por un total de 60 puntos.

Capítulo 1 Comenzando con OpenCV

  • El comando para instalar Numpy es pip install Numpy .

Capítulo 2 Conceptos básicos del procesamiento de imágenes

  • En los programas Python, OpenCV usa matrices NumPy para almacenar imágenes. El formato de imagen predeterminado de OpenCV es BGR , es decir, las tres dimensiones de la matriz de imágenes de 3 canales son los píxeles de los canales B (azul), G ( verde ) y R ( rojo ).
  • Utilice la función zeros() para crear una matriz. El valor predeterminado de los elementos de la matriz es 0 .
  • El resultado de salida de img.shape es (512, 512, 3), que indica una matriz tridimensional que representa una imagen en color. Los tres valores a su vez representan la altura, el ancho y el número de canales de la imagen ; La resolución de la imagen es 512x512 .
  • La esencia de la reproducción de video OpenCV es leer y mostrar imágenes cuadro por cuadro. Normalmente, las computadoras procesan la escala de grises en 256 niveles, donde 0 representa el negro y 255 representa el blanco.
    La función cv2.split() se utiliza para dividir canales.

Capítulo 3 Interfaz gráfica de usuario

  • La función para dibujar un rectángulo es cv2.rectangle() y la función para dibujar un círculo es cv2.circle() .
  • La función para dibujar elipses es cv2.ellipse() .
  • La función para dibujar texto es cv2.putText() .

Capítulo 4 Transformación de imágenes

  • cv2.COLOR_BGR2RGB : convierte el espacio de color BGR al espacio de color RGB.
  • El espacio de color GRIS generalmente se refiere a una imagen en escala de grises de 8 bits y su rango de valores de color es **[0,256]**.
  • El espacio de color YCrCb representa una imagen en términos de brillo Y, rojo Cr y azul Cb.
  • La función de voltear la imagen es cv2.flip() .
  • El espacio de color HSV utiliza tono, saturación y brillo para representar imágenes.
  • La transformación afín incluye operaciones como traslación, rotación y escalado.
  • El objetivo principal del desenfoque de la imagen es eliminar el ruido y los bordes de la imagen.
  • El filtrado medio se refiere a tomar el punto actual como centro y reemplazar el valor de píxel del punto actual con el promedio de los valores de píxel de N x N puntos a su alrededor.
  • El filtrado de mediana toma el valor de la mediana como el valor de píxel del punto central del vecindario.
  • La operación de apertura primero realiza la operación de erosión en la imagen y luego realiza la operación de expansión en el resultado de erosión.

Capítulo 5 Bordes y contornos

  • El borde de una imagen se refiere a la posición donde el valor de gris cambia bruscamente en la imagen. El propósito de la detección de bordes es dibujar líneas de borde .
  • El resultado de la detección de bordes suele ser una imagen en blanco y negro, y las líneas blancas de la imagen representan bordes .

Capítulo 6 Histograma

  • La abscisa del histograma representa el nivel de gris del píxel de la imagen y la ordenada representa el número de niveles de gris del píxel .
  • Un histograma bidimensional cuenta el tono y la saturación de los píxeles y se utiliza para encontrar el histograma de color de una imagen.

Capítulo 7 Coincidencia de plantillas y segmentación de imágenes

  • La coincidencia de plantillas se refiere a encontrar partes de la imagen actual que sean similares a la imagen de destino . La segmentación de imágenes se refiere a segmentar o extraer objetos de primer plano de las imágenes.
  • La coincidencia de un solo objetivo significa que solo hay un resultado de coincidencia posible en la imagen de entrada .

Capítulo 8 Detección de funciones

  • La detección de características ORB se mejora según el detector de características FAST y el descriptor BRIEF para obtener un mejor rendimiento de detección de características.
    El detector de características FAST determina principalmente si un píxel es un punto clave en función de los parámetros de intensidad y umbral de los 16 píxeles que rodean el píxel.

2. Preguntas de programación

Dos preguntas de programación, por un total de 40 puntos.

Capítulo 2 Ejercicios

Insertar descripción de la imagen aquí


```python
#习题2-1.py:创建一幅大小为240×320的图像,图像中心是一个大小为100×100的红色正方形,周围是黑色

import cv2
import numpy
img = numpy.zeros((240,320,3),dtype=numpy.uint8) #创建黑色背景
img[70:170,110:210,2]=255  #创建红色区域(100*100)
cv2.imshow('xiti2-1',img)
cv2.waitKey(0)
#习题2-2.py:选择一幅彩色图像,完成下列操作:
#(1)将图像转换为灰度图像显示。
#(2)将图像尺寸减小为原来的1/2显示。
import cv2
img=cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)#(1)将彩色图像转换为灰度图像
cv2.imshow('GRASCALE',img)
img=cv2.imread('lena.jpg',cv2.IMREAD_REDUCED_COLOR_2)#(2)将图像尺寸缩小为原来的1/2
cv2.imshow('COLOR_2',img)
cv2.waitKey(0)
cv2.waitKey(0)
#习题2-3.py:选择一幅彩色图像,通过像素更改,在图像中显示一个大小为80×100的黑色正方形。
import cv2
img=cv2.imread('lena.jpg')
h,w,s=img.shape  #得到原图的高宽通道
h1=int(h/2)  #获取原图高度的一半,并且强制转换为int
w1=int(w/2)
img[h1-40:h1+40,w1-50:w1+50,:]=0  #也可以直接通过像素区域打码 在img中 img[::]=255
cv2.imshow('xiugai',img)
cv2.waitKey(0)
#习题2-4.py:选择一幅彩色图像,分别显示其B、G、R通道图像。
import cv2
img = cv2.imread('lena.jpg')
cv2.imshow('lena',img)
b,g,r=cv2.split(img)#重点
cv2.imshow('lena-b',b)
cv2.imshow('lena-g',g)
cv2.imshow('lena-r',r)
cv2.waitKey(0)
#习题2-5.py:选择一幅彩色图像,用NumPy数组创建掩模,在图像中心取出大小为80×120的图像。
import cv2
import numpy
src1 = cv2.imread('lena.jpg')
h,w,s=src1.shape
img = numpy.zeros((h,w,s),dtype=numpy.uint8) #创建黑色背景
h1=int(h/2)
w1=int(w/2)
img[h1-40:h1+40,w1-60:w1+60,:]=255
img2=cv2.bitwise_and(src1,img) #题目要求是用Numpy数组创建掩膜的方式打码 img[10:90,20:120,:]=255
cv2.imshow('yanmo',img2)
cv2.waitKey(0)

Capítulo 5 Ejercicios

Insertar descripción de la imagen aquí

#习题5-1 选择一幅图像,对其执行Laplacian边缘检测
import cv2
img = cv2.imread('bee.jpg')
cv2.imshow('original',img)
#Laplacian边缘检测
img2 = cv2.Laplacian(img,cv2.CV_8U,ksize=1)
cv2.imshow('L',img2)
cv2.waitKey(0)
#习题5-2 选择一幅图像,对其执行Sobel边缘检测
import cv2
img = cv2.imread('bee.jpg')
cv2.imshow('original',img)
#Sobel边缘检测
img3 = cv2.Sobel(img,cv2.CV_8U,0,1) #0表示对x不求偏导,1表示对y偏导 dx>=0 && dy>=0 && dx+dy>0
cv2.imshow('C',img3)
cv2.waitKey(0)


#习题5-3 选择一幅图像,对其执行Canny边缘检测
import cv2
img = cv2.imread('bee.jpg')
cv2.imshow('original',img)
#Canny边缘检测
img4 = cv2.Canny(img,100,200,apertureSize=3)
cv2.imshow('Canny',img4)
cv2.waitKey(0)
#test5-4.py:查找和绘制轮廓
#先查找后绘制,前7行代码与查找轮廓代码一致
import cv2
import numpy as np
img=cv2.imread('shapes.jpg')        #读取图像
cv2.imshow('original',img)  	    #显示原图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转化为灰度图像
ret,img2=cv2.threshold(gray,125,255,cv2.THRESH_BINARY)#二值化阈值处理
c,h=cv2.findContours(img2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 
img3=np.zeros(img.shape, np.uint8)+255 	    #按原图大小创建一幅白色图像
#image=cv2.drawContours(image,contours,contourIdx,color,thickness)
#image:原图
#contours为要绘制的轮廓
img3=cv2.drawContours(img3,c,-1,(0,0,255),2)    #绘制轮廓 -1表示绘制所有轮廓
cv2.imshow('Contours',img3)  	                #显示轮廓图像
cv2.waitKey(0)                                  #按任意键结束等待
cv2.destroyAllWindows()                         #关闭所有窗口

Resumir

Supongo que te gusta

Origin blog.csdn.net/xiaoren886/article/details/128365735
Recomendado
Clasificación