×
Namespaces

Variants
Actions

Archived:Como usar pycamera

From Nokia Developer Wiki
Jump to: navigation, search

Archived.pngAquivado: 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.

Article Metadata

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
This page was last modified on 7 May 2013, at 14:35.
113 page views in the last 30 days.
×