Archived:Como usar pycamera
Aquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.
All PySymbian articles have been archived. PySymbian is no longer maintained by Nokia and is not guaranteed to work on more recent Symbian devices. It is not possible to submit apps to Nokia Store.
All PySymbian articles have been archived. PySymbian is no longer maintained by Nokia and is not guaranteed to work on more recent Symbian devices. It is not possible to submit apps to Nokia Store.
Dados do artigo
Testado com
Aparelho(s): Nokia N95, Nokia E90
Compatibilidade
Plataforma(s): S60 1st Edition, S60 2nd Edition, S60 3rd Edition
Artigo
Palavras-chave: pycamera, sysinfo
Tradução:
Originado de How to use pycamera
Por ygor_amaral
Última alteração feita por hamishwillee
em 07 May 2013
Visão Geral
Com o recente lançamento do Nokia Computer Vision Library para Python, podemos tirar fotos e brincar com um maior leque de funcionalidades. Este exemplo mostra como tirar uma foto usando o módulo pycamera (NokiaCV and utilities).
Recentemente, ficamos sabendo de um bug ao usar o método take_photo() no módulo padrão da câmera, assim esta nova característica ajudará muito neste caso.
Fragmento do Código
import e32
import pycamera
import sysinfo
print "Construindo o objeto camera 0"
cam = pycamera.Camera(0)
print "Reservando câmera"
cam.Reserve()
print "Ligando"
cam.PowerOn()
print "Preparando para a captura"
# (640, 480), (1024, 768), (1600, 1200)
cam.SetResolution((2592, 1944))
# EFormat16bitRGB444, EFormat16BitRGB565, EFormat32BitRGB888, EFormatFbsBitmapColor16M
# EFormatFbsBitmapColor16MU, EFormatFbsBitmapColor4K, EFormatFbsBitmapColor64K, EFormatJpeg, EFormatMonochrome, EFormatUserDefined
# EFormatYUV420Interleaved,EFormatYUV420Planar,EFormatYUV420SemiPlanar,EFormatYUV422,EFormatYUV422Reversed,EFormatYUV444
cam.SetFormat(pycamera.EFormatExif)
# 5 to 101
cam.SetJpegQuality(101)
# 0(Auto) , 50, 100, 200, 400, 800, 1600
cam.SetISO(50)
# EExposureManual, EExposureAperturePriority, EExposureAuto,EExposureBacklight,EExposureBeach,EExposureCenter,EExposureInfra,EExposureNight,EExposureProgram,EExposureShutterPriority,EExposureSnow,EExposureSport,EExposureSuperNight,EExposureVeryLong
cam.SetExposureMode(pycamera.EExposureCenter)
# - 8 to 9 by step of 0.25
cam.SetExposureCompensation(-4)
# EWBAuto, EWBBeach, EWBCloudy, EWBFlash, EWBFluorescent, EWBManual, EWBShade, EWBSnow, EWBTungsten,
#cam.SetWBMode(EWBDayLight)
# EFlashAuto, EFlashFillIn,EFlashForced, EFlashLManual, EFlashRedEyeReduce, EFlashSlowFrontSync, EFlashSlowRearSync
#cam.SetFlash(EFlashNone)
cam.PrepareForCapture()
lock = e32.Ao_lock()
photo = None
def photo_callback(arg):
global photo
print "Foto recebida!"
print type(arg)
photo = arg
lock.signal()
cam.SetPhotoCallback(photo_callback)
def viewfinder_callback(arg):
print "Visor da figura"
cam.SetViewfinderCallback(viewfinder_callback)
print "Iniciando visor"
cam.StartViewfinder()
e32.ao_sleep(1)
K = 1
import appuifw
for i in range(K):
print "Obtendo foto", i
print "Memória livre: ", sysinfo.free_ram()
cam.TakePhoto()
lock.wait()
canvas = appuifw.Canvas(event_callback = lambda ev: None,
redraw_callback = lambda ev: None)
oldBody = appuifw.app.body
appuifw.app.body = canvas
im = pycamera.DecodeJpeg(photo)
canvas.blit(im)
e32.ao_sleep(1)
appuifw.app.body = oldBody
print "Fechando visor"
cam.StopViewfinder()
print "Desligando"
cam.PowerOff()
print "Liberando"
cam.Release()
print "Deletando o objeto câmera"
del cam


(no comments yet)