Este exemplo encontra uma primeira moeda na imagem e, em seguida, usa essa medida
para determinar o resto das moedas na imagem. Desde a moeda de quarter tem sempre
um determinado tamanho, podemos usa-lo como uma referencia por ela ser conhecida.
Usamos milimetros para pixels para fazer a conversao.
Os tamanhos das moedas são como se segue:
penny - 19.05 mm
nickel - 21.21 mm
dime - 17.9 mm
quarter - 24.26 mm
Bom, então vamos ao código!
Segue uma Imagem do resultado!
exemplo retirado e adaptado de:
https://github.com/sightmachine/SimpleCV/blob/master/SimpleCV/examples/detection/CoinDetector.py
veja mais em https://github.com/sightmachine/SimpleCV/
ajude Nossa Comunidade a crescer!
what if it's exactly 18 or 20?
ResponderExcluirWould you consider a class for coin sizes?
Or a table for the sizes instead of if/else?
This is more lines, but simpler at every line. ...
class coinsize:
def __init__(self, low, high, name):
self.low = low
self.high = high
self.name=name
def matches(self, diameter):
return self.low < diameter < self.high
coins_by_size = [
coinsize(23,26,"quarter"),
coinsize(16,18,"dime"),
coinsize(20,23,"nickel"),
coinsize(18,20,"penny"),
]
# Just an example, not quite like yours...
for diameter in range(20,25):
print [ (diameter, x.name)
for x in coins_by_size
if x.matches(diameter)
] or "unknown"