OpenCV-Python é uma biblioteca de links Python projetada para resolver problemas de visão computacional. O método cv2.circle() é usado para desenhar um círculo em qualquer imagem.
Sintaxe: cv2.circle(image, center_coordinates, radius, color, density)
Parâmetros:
imagem: é a imagem na qual o círculo deve ser desenhado.
center_coordinates: São as coordenadas do centro do círculo. As coordenadas são representadas como tuplas de dois valores, ou seja (valor da coordenada X, valor da coordenada Y).
raio: é o raio do círculo.
cor: é a cor da linha de borda do círculo a ser desenhada. Para BGR, passamos uma tupla. ex.: (255, 0, 0) para a cor azul.
espessura: É a espessura da linha da borda do círculo em px. Espessura de -1 px preencherá a forma do círculo com a cor especificada.
Valor de retorno: retorna uma imagem.
Como desenhar um círculo sobre a imagem OpenCV?
Pergunta do StackOverflow
Estou usando python e opencv para obter uma imagem da webcam, e quero saber como desenhar um círculo sobre minha imagem, apenas um simples círculo verde com transparência preencha
meu código:
importar cv2 importar numpy importar sys if __name__ == `__main__`: #obter quadro atual da webcam cam = cv2. VideoCapture(0) img = cam.read() #como desenhar um círculo???? cv2.imshow(`WebCam`, img) cv2.waitKey()
Agradecemos antecipadamente. p>
Resposta
cv2.circle(img, center, radius, color, density= 1, lineType=8, shift=0) ‚Üí Nenhum Desenha um círculo. Parâmetros: img (CvArr) ‚Äì Imagem onde o círculo é desenhado no centro (CvPoint) ‚Äì Centro do raio do círculo ( int) ‚Äì Raio da cor do círculo (CvScalar) ‚Äì Espessura da cor do círculo (int) ‚Äì Espessura do contorno do círculo se positivo, caso contrário, isso indica que um círculo preenchido deve ser desenhado lineType (int ) ‚Äì Tipo do limite do círculo, consulte Deslocamento da descrição da linha (int) ‚Äì Número de bits fracionários em as coordenadas do centro e valor do raio
Use o parâmetro "thickness" apenas para a borda.
Exemplo #1
def blob(x): """Dada uma matriz Nx3 de posições e tamanho de blob, crie N img_size x imagens img_size, cada uma com um blob desenhado neles dado pelo valor em cada linha de x Uma linha de x = [x,y,radius].""" y = np.zeros((x.shape[0], img_size, img_size)) for i , partícula em 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 #%% # nomes (isto é apenas para referência no momento!)
Exemplo #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) id/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)
Exemplo #3
def ProcessFrame(self, frame): # segment arm region segment = self.SegmentArm(frame) # faz uma cópia da imagem segmentada para desenhar desenhar = cv2.cvtColor(segmento, cv2. COLOR_GRAY2RGB) # desenha alguns auxiliares para posicionar corretamente a mão 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) # encontra o casco da área segmentada, e com base nisso encontra os # defeitos de convexidade [contours,defects] = self.FindHullDefects(segment) # detecta o número de dedos dependendo dos contornos e defeitos de convexidade # desenha defeitos que pertencem aos dedos verdes, outros vermelhos [nofingers,draw] = self.DetectNumberFingers( contornos, defeitos, desenho) # imprime o número de dedos na imagem cv2.putText(draw, str(sem dedos), (30,30), cv2. FONT_HERSHEY_SIMPLEX, 1, (255,255,255)) return draw
Exemplo #4
def mark_hand_center(frame_in,cont): max_d=0 pt=(0,0) x,y,w,h = cv2.boundingRect(cont) for ind_y em xrange(int(y+) 0,3*h),int(y+0,8*h)): #em torno de 0,25 a 0,6 região de altura (cálculo mais rápido com resultados ok) para ind_x em xrange(int(x+0,3*w),int(x+0 .6*w)): #cerca de 0,3 a 0,6 região de largura (cálculo mais rápido com resultados ok) 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. Encontre e exiba o gesto
Exemplo #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)) para track_number no intervalo (1, 65 ): if str(track_number)+`_track_range` em 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.cir cle(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)
Versão arquivada
OpenCV-Python —¬†é uma ligação do Python biblioteca para resolver problemas de visão computacional.¬†cv2.circle ()
é usado para desenhar um círculo em qualquer imagem.
Sintaxe: cv2.circle (imagem, coordenadas_central, raio, cor , espessura)
Parâmetros:
imagem: É a imagem na qual o círculo deve ser desenhado.
center_coordinates: São as coordenadas do centro do círculo. ¬†As coordenadas são representadas como tuplas de dois valores ‚Äã‚Äãie ( X valor da coordenada, Y valor da coordenada).
raio: É o raio do círculo.
cor: É a cor da linha de borda do círculo a ser desenhado. ¬†Para BGR , nós p ass uma tupla.¬†ex: (255, 0, 0) para a cor azul.
espessura: É a espessura da linha da borda do círculo em px . ¬†A espessura de -1 px preencherá a forma rectangle-method/">retângulo pelo cor especificada.Valor de retorno: Retorna uma imagem.
A imagem é usada para todos os exemplos abaixo:
Exemplo nº 1:
# programa Python para explicar o método cv2.circle ()
 
# cv2 import
import
cv2 
 
# caminho
caminho
=
r
`C: UsersRajnishDesktoppythonengineeringgeeks.png`
 
¬†# Lê a imagem no modo padrão
imagem
=
cv2.imread (caminho)
 
# Nome da janela na qual a imagem é exibida
window_name
=
`Imagem`
 
 # Coordenadas centrais
center_coordinates
=
(
120
,
50
)
 
# Raio do círculo
radius
=
20
 
 # Cor azul em BGR
color
=
(
255
,
0
,
0
)
 
# Largura da linha 2 px
espessura
=
2
 
# Usando o cv2.circle () método
# Desenhe um círculo com uma borda azul de 2 px
imagem
=
cv2.circle (imagem, coordenadas_central, raio, cor, espessura)
 
# Exibir imagem
cv2.imshow (window_name, imagem) 
Saída: >
Exemplo nº 2:
Usando -1 px espessura para preencher o rectangle-method/">retângulo com vermelho.
# Programa Python para explicar o método cv2.circle ()
 
# cv2 import
import
cv2 
 
# caminho
caminho
=
r
`C: UsersRajnishDesktoppythonengineeringgeeks.png`
 
# Ler imagem no modo padrão
imagem
=
cv2.imread (caminho)
 
# Nome da janela na qual a imagem é exibida
window_name
=
`Imagem`
 
 # Coordenadas centrais
center_coordinates
=
(
120
,
100
)
 
¬†# Raio do círculo
raio
=
30
 
 < br># Vermelho em BGR
cor
=
(
0
,
0
,
255
)
¬ †
# Espessura da linha -1 px
espessura
=
-
1
 
# Usando o cv2.circle () método
# Desenha um -1 px círculo vermelho
imagem
=
cv2.circle (imagem, coordenadas_central, raio, cor, espessura)
<¬†code class = "espaços indefinidos">¬†¬†
# Exibindo uma imagem
cv2.imshow (window_name, image ) 
 
Saída: