Pergunta

Gostaria de usar a câmera do meu Macbook em um programa.Sou bastante agnóstico quanto à linguagem - C, Java, Python etc. estão bem.Alguém poderia sugerir o melhor lugar para procurar documentos ou código do tipo "Olá mundo"?

Foi útil?

Solução

A estrutura ImageKit no Leopard tem um IKPictureTaker classe que permitirá que você execute a folha ou painel padrão para tirar fotos que você viu no iChat e em outros aplicativos.

Se você não quiser usar a interface padrão do painel/folha do fotógrafo, você pode usar o Captura QTKit funcionalidade para obter uma imagem do iSight.

Ambos exigirão a escrita de algum código Cocoa em Objective-C, mas isso não deve ser um obstáculo atualmente.

Outras dicas

Se quiser manipular a câmera diretamente do seu código, você deve usar as APIs do QuickTime Capture ou o Captura QTKit de cacau invólucro (muito melhor).

A única ressalva é:se você usar um QTCaptureDecompressedVideoOutput, lembre-se de que os retornos de chamada não são feitos no thread principal, mas no thread de captura gerenciado pelo QuickTIme.Use [someObject performSelectorOnMainThread:...comObjeto:...waitUntilDone:NO] para enviar mensagens para um objeto no thread principal.

Existe um utilitário chamado isightcapture que é executado a partir da linha de comando unix, tira uma foto da câmera isight e a salva.

Você pode conferir neste site: http://www.macupdate.com/info.php/id/18598

Um exemplo de uso disso com AppleScript é:

Informe o aplicativo "Terminal" Do Script "/Applications/IsightCapture MyImage.jpg" End Tell

A partir de uma pergunta relacionada que pedia especificamente que a solução fosse pythônica, você deveria tentar camisola do motmot biblioteca de Andrew Straw.Também funciona com câmeras firewire, mas também funciona com a isight, que é o que você procura.

Do tutorial:

import motmot.cam_iface.cam_iface_ctypes as cam_iface
import numpy as np

mode_num = 0
device_num = 0
num_buffers = 32

cam = cam_iface.Camera(device_num,num_buffers,mode_num)
cam.start_camera()
frame = np.asarray(cam.grab_next_frame_blocking())
print 'grabbed frame with shape %s'%(frame.shape,)

É usado neste exemplo de demonstração de neurociência

Quartz Composer também é uma forma agradável de capturar e trabalhar com vídeo, quando aplicável.Há um patch de entrada de vídeo.

Quartz Composer é um ambiente de programação visual que se integra a um programa Cocoa maior, se necessário.

http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html

Outra solução é OpenCV + python com um script como:

import cv
capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)

Não é possível fazer nada mais simples!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top