Método Python OpenCV | cv2.circle ()

| | | | | | | | | | | | | | | | | | | | | | | | | |

OpenCV-Python es una biblioteca de enlaces de Python diseñada para resolver problemas de visión artificial. El método cv2.circle() se utiliza para dibujar un círculo en cualquier imagen.

Sintaxis: cv2.circle(imagen, coordenadas_centrales, radio, color, grosor)
Parámetros: 
imagen: Es la imagen sobre la que se va a dibujar el círculo. 
coordenadas_centro: Son las coordenadas del centro del círculo. Las coordenadas se representan como tuplas de dos valores, es decir (valor de la coordenada X, valor de la coordenada Y). 
radio: es el radio del círculo. 
color: Es el color de la línea del borde del círculo a dibujar. Para BGR, pasamos una tupla. por ejemplo: (255, 0, 0) para el color azul. 
grosor: Es el grosor de la línea del borde del círculo en px. Un grosor de -1 px rellenará la forma del círculo con el color especificado.
Valor devuelto: Devuelve una imagen. 
 

¿Cómo dibujar un círculo sobre la imagen OpenCV?

Pregunta de StackOverflow

Uso Python y OpenCV para obtener una imagen de la cámara web, y quiero sé cómo dibujar un círculo sobre mi imagen, solo un círculo verde simple con relleno transparente

enter descripción de la imagen aquí

mi código:

importar cv2 importar numpy importar sys if __name__ == `__main__`: #obtener cuadro actual de la cámara web cam = cv2.VideoCapture(0) img = cam.read() #ho dibujar un círculo???? cv2.imshow(`WebCam`, img) cv2.waitKey() 

Gracias de antemano.

Respuesta

cv2.circle(img, centro, radio, color, grosor=1, lineType=8, shift=0) ‚Üí Ninguno Dibuja un círculo. Parámetros: img (CvArr) ‚Äì Imagen donde el círculo es centro dibujado (CvPoint) ‚Äì Centro del radio del círculo ( int) ‚Äì Radio del color del círculo (CvScalar) ‚Äì Grosor del color del círculo (int) ‚Äì Grosor del contorno del círculo si es positivo; de lo contrario, esto indica que se debe dibujar un círculo relleno  lineType (int ) ‚Äì Tipo del límite del círculo, consulte Cambio de descripción de línea (int) ‚Äì Número de bits fraccionarios en las coordenadas centrales y valor del radio 

Use el parámetro "grosor" solo para el borde.

Ejemplo #1

def blob(x): """Dada una matriz Nx3 de posiciones y tamaños de blobs, cree N img_size x img_size imágenes, cada una con un blob dibujado en ellos dado por el valor en cada fila de x Una fila de x = [x,y,radius].""" y = np.zeros((x.shape[0], img_size, img_size)) para i , partícula en enumerate(x): rr, cc = skimage.draw.circle(partícula[0], partícula[1], max(partícula[2], 1), forma=(img_size, img_size) ) y[i, rr, cc] = 1 return y #%% # nombres (¡esto es solo como referencia por el momento!) 

Ejemplo #2

def update(self, radarData): self .img = np.zeros((self.height, self.width, self.channels), np.uint8) cv2.line(self.img, (10, 0), (self.width/2 - 5, self. altura), (100, 255, 255)) cv2.line(self.img, (self.width - 10, 0), (self.width/2 + 5, self.height), (100, 255, 255) ) para track_number in range(1, 65): if str(track_number)+`_track_range` in radarData: track_range = radarData[str(track_number)+`_track_range`] track_angle = (float(radarData[str(track_number)+`_track_angle `])+90.0)*math.pi/180 x_pos = math.cos(track_angle)*track_range*4 y_pos = math.sin(track_angle)*track_range*4 cv2.circle(self.img, (self.w idth/2 + int(x_pos), self.height - int(y_pos) - 10), 5, (255, 255, 255)) #cv2.putText(self.img, str(track_number), # (self.width /2 + int(x_pos)-2, self.height - int(y_pos) - 10), self.font, 1, (255,255,255), 2) cv2.imshow("Radar", self.img) cv2.waitKey( 2) 

Ejemplo #3

def ProcessFrame(self, frame): # segment arm region segment = self.SegmentArm(frame) # hacer una copia de la imagen segmentada para dibujar draw = cv2.cvtColor(segment, cv2.COLOR_GRAY2RGB) # dibujar algunos ayudantes para colocar correctamente la mano cv2.circle(draw,(self.imgWidth/2,self.imgHeight/2),3,[255,102,0],2) cv2.rectangle(draw, (self.imgWidth/3,self.imgHeight/3), (self.imgWidth*2/3, self.imgHeight*2/3), [255,102,0],2) # encontrar el casco del área segmentada, y en base a eso encontrar los # defectos de convexidad [contornos, defectos] = self.FindHullDefects(segmento) # detectar el número de dedos dependiendo de los contornos y defectos de convexidad # dibujar defectos que pertenecen a los dedos verdes, otros rojos [sin dedos, dibujar] = self.DetectN umberFingers(contornos, defectos, dibujo) # imprime el número de dedos en la imagen cv2.putText(dibujo, str(sindedos), (30,30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255)) return dibujo 

Ejemplo #4

def mark_hand_center(frame_in,cont): max_d=0 pt=(0,0) x,y,w,h = cv2.boundingRect(cont) for ind_y in xrange(int( y+0.3*h),int(y+0.8*h)): #alrededor de 0.25 a 0.6 regiones de altura (Cálculo más rápido con resultados correctos) para ind_x en xrange(int(x+0.3*w),int(x+ 0.6*w)): #alrededor de 0.3 a 0.6 región de ancho (cálculo más rápido con resultados correctos) dist= cv2.pointPolygonTest(cont,(ind_x,ind_y),True) if(dist>max_d): max_d=dist pt=( ind_x,ind_y) if(max_d>radius_thresh*frame_in.shape[1]): thresh_score=True cv2.circle(frame_in,pt,int(max_d),(255,0,0),2) else: thresh_score=False return frame_in,pt,max_d,thresh_score # 6. Gesto de búsqueda y visualización 

Ejemplo #5

def update(self, radarData): self.img = np.zeros((self.height, self.width, self.channels) , np.uint8) cv2.line(self.img, (10, 0), (self.width/2 - 5, self.height), (100, 255, 255)) cv2.line(self.img, ( self.width - 10, 0), (self.width/2 + 5, self.height), (100, 255, 255)) for track_number in range(1, 65): if str(track_number)+`_track_range` en radarData: track_range = radarData[str(track_number)+`_track_range`] track_angle = (float(radarData[str(track_number)+`_track_angle`])+90.0)*math.pi/180 x_pos = math.cos(track_angle) *rango_de_pista*4 y_pos = math.sin(ángulo_de_pista)*rango_de_pista*4 cv2.circle(self.img, (self.width/2 + int(x_pos), self.height - int(y_pos) - 10), 5, (255, 255, 255)) #cv2.putText(self.img, str(track_number), # (self.width/2 + int(x_pos)-2, self.height - int(y_pos) - 10), self .font, 1, (255,255,255), 2) cv2.imshow("Radar", self.img) cv2.waitKey(2) 


Versión archivada

OpenCV-Python —¬†es un enlace de Python biblioteca para resolver problemas de visión artificial.¬†cv2.circle () se usa para dibujar un círculo en cualquier imagen.

Sintaxis: cv2.circle (imagen, coordenadas_centrales, radio, color, grosor)

Parámetros:
imagen: Es la imagen sobre la que se va a dibujar el círculo.
coordenadas_centrales: Son las coordenadas del centro del círculo.¬†Las coordenadas se representan como tuplas de dos valores ‚Äã‚Äãie ( X valor de la coordenada, Y valor de la coordenada).
radio: Es el radio del círculo.
color: Es el color de la línea del borde del círculo a dibujar.¬†Para BGR , pasamos sa tupla.¬†ej.: (255, 0, 0) para el color azul.
espesor: Es el espesor de la línea del borde del círculo en px .¬ †Grosor de -1 px llenará la forma rectangle-method/">rectángulo por la forma especificada color.

Valor de retorno: Devuelve una imagen.

La imagen se usa para todos los ejemplos a continuación:

Ejemplo #1:

# Programa Python para explicar el método cv2.circle ()

 
# cv2 import

importar cv2 

 
# ruta

ruta = r `C: UsersRajnishDesktoppythonengineeringgeeks.png`

  
# Leer imagen en modo predeterminado

imagen = cv2.imread (ruta)

 
# Nombre de la ventana en la que se se muestra la imagen

window_name = `Imagen `

  
# Coordenadas del centro

coordenadas_centrales = ( 120 , 50 )

 
# Radio del círculo

radio = 20

  
# Color azul en BGR

color = ( 255 < código clase = "simple">, 0 , 0 )

 
# Ancho de línea 2 px

grosor = 2

 
# Usando el método cv2.circle ()
# Dibuja un círculo con un borde azul de 2 px

imagen = cv2.circle (imagen, centro_coordenadas, radio, color, grosor )

 
# Mostrar imagen
cv2.imshow ( nombre_ventana, imagen) 

Salida:

Ejemplo n.° 2:
Utilizar - 1 px de grosor para rellenar el rectangle-method/">rectángulo con rojo.

# Programa Python para explicar el cv2.circle () método

 
# importar cv2

importar cv2 

 
# ruta

ruta = r `C: UsersRajnishDesktoppythonengineeringgeeks.png`

 
# Leer imagen en modo predeterminado < /código>

imagen = cv2.imread (ruta)

 
# Nombre de la ventana en la que se muestra la imagen

nombre_ventana = `Imagen`

  
# Coordenadas del centro

center_c oordenadas = ( 120 , 100 )

¬ †¬†
# Radio del círculo

radio = 30

  
# Rojo en BGR

color = ( 0 , 0 , 255 )

 
# Grosor de línea -1 px

grosor = - 1

 
# Usando el método cv2.circle ()

# Dibuja un círculo rojo de -1 px

imagen = cv2.circle (imagen, coordenadas_centrales, radio, color, grosor)

< code class = "espacios indefinidos">  
# Mostrando una imagen
< clase de código = "simple"> cv2.imshow (nombre_ventana, imagen)¬†

 

Salida: