# -*- coding: utf-8 -*- # permite açentuações
from SimpleCV import * #importa todo meu FrameWork
__author__ = 'Rodrigo Gomes'
__name__ = "Bom_de_Mira"
cam = Camera() # instanciacao da camera.
temp = Image('/home/rodrigo/Imagens/2.png').resize(190, 140) #caminho para a Imagem
while True:
img = cam.getImage().flipHorizontal() #captura os frames
img+=img.blit(temp,(1,2),alphaMask=temp) #junta Imagem ao Frame
mascara = img.hueDistance(color=Color.GREEN,minsaturation=150,minvalue=200).invert().threshold(150) #cria mascara
blobs = img.findBlobsFromMask(mascara,minsize=10) #procura obj apartir da mascara
if blobs: # se existir objetos
blobs = blobs[-1] # passa o objeto maior
cod = blobs.coordinates() # pega as coordenadas do objeto em uma tupla
print "coordenadas do objeto ---> %d %d" % (cod[0],cod[1])
points = [(145, 90),(cod[0],cod[1])] # pontos para desenhar a linha
for i in xrange(len(points)-1):
img.drawLine(points[i], points[i+1],color=Color.RED, thickness=4) #desenha a linha
img = img.applyLayers() # aplica as camadas
result = img.sideBySide(img,side='right') # divide a tela
result = img.sideBySide(mascara,side='botton') #parte 1 da tela é a mascara
result.show() #mostra na tela
Resultado:
Lembrando que tudo também depende da qualidade do vídeo da sua webcam, e da iluminação do ambiente, caso contrario, terá que ser feito alterações nos parâmetros da máscara
e aqui a imagem da pistola:
Obs: não se preocupe se não consegue enchergar o fundo, a camada png é transparente!
Demostração:


Opa Rodrigo, tudo certo?
ResponderExcluirAnimal esse seu blog. Várias coisas muito interessantes e úteis.
Comecei a ler a pouco tempo atrás sobre algumas bibliotecas de manipulação de imagens.
Queria te perguntar se com a SimpleCV em Python é possível fazer um programa que analise gabaritos tipo as de concurso, vestibulares, etc...
Já vi algumas bibliotecas parecidas, mas ao que parece essa é uma das melhores.
Voce sabe se é possível fazer isso? E sabe se existe alguma coisas já iniciada em algum projeto.
Valeu Rodrigo e parabéns novamente pelo Blog.
Abraço
Sim é perfeitamente possível, e ainda simples de se fazer, não conheço nenhum projeto iniciado sobre esse tema, vou dar uma olhada, e se encontrar algo em breve postarei aqui.!
ResponderExcluirObrigado Rodrigo.
ResponderExcluirGostaria de pedir uma ajuda, estou meio perdido com tantas funções que a biblioteca SimpleCV.
Como voce disse que é simples de se fazer, porém não me encontrei ainda....
Você poderia indicar algum caminho para seguir estudando para conseguir reconhecer os círculos.
Já tentei o usar o findCirles, mas não consegui reconhecer todos os círculos que precisava. Quando filtrei por um intervalo nem todos os círculos foram recohecidos sem que outros indesejáveis fossem reconhecido.
Segue o código:
Para testar um gabarito qualquer que encontrei no google
1 from SimpleCV import *
2 import time
3
4 moeda = Image("gabarito.png")
5
6 moeda_circ = moeda.findCircle()
7
8
9 for m in moeda_circ:
10 if m.radius() > 4 and m.radius() < 12:
11 print m.coordinates()
12 print m.radius()
13 m.show(color=(0,128,0))
14 time.sleep(4)
Estou tentando usar o findBlobs, mas estou bem confuso se realmente é esse o caminho.
Estou tentando por esse caminho:
1 from SimpleCV import*
2 import time
3
4 gab = Image("gab.png")
5
6 gab_bo = gab.findBlobs()
7
8 gab_bo[-1].show()
9
10 time.sleep(7)
11
12 print gab_bo[1].boundingCircle()
13
14 #for g in gab_bo:
15 # if g.radius() < 10:
16 # print g.coordinates()
17 # g.show()
18 time.sleep(7)
A parte comentada não esta funcionando, porém foi retirada do manual do SimpleCV
Desculpe por estar tirando uma dúvidas dessas por aqui, mas não encontrei algum lugar que pudesse ajudar.
Se você puder indicar algum caminho para resolver esse problema ficaria grato.
Obrigado novamente.
Abraço
Tem como instalar o PyCharm no Raspbarry pi?
ResponderExcluirObrigado!
Casinos in NV 2021 - DrMCD
ResponderExcluirVisit a casino in NV. Casino players will find the best 김포 출장마사지 games, 서산 출장안마 the most exciting welcome bonuses, and 경기도 출장안마 all of 광주광역 출장마사지 the most 공주 출장샵 rewarding promotions. Visit us!