2012-03-14 11 views
16

उबंटू 11.10 में प्रोग्रामेटिक गाइड (या तो बैश या पायथन से) के लिए उपयोगकर्ता का वेबकैम फोटो कैप्चर करने का सबसे आसान तरीका क्या है?प्रोग्रामिंग रूप से वेबकैम फोटो कैप्चर करने के लिए कैसे करें

मैं पनीर जैसे एक साधारण ऐप लॉन्च कर सकता हूं, लेकिन मुझे तुरंत कैप्चर की गई तस्वीर का पता लगाने या पुनर्प्राप्त करने का एक आसान तरीका नहीं दिख रहा है। मैं ओपनसीवी के माध्यम से सीधे वेबकैम स्ट्रीम तक पहुंच और रिकॉर्ड भी कर सकता हूं, लेकिन मुझे उपयोगकर्ता के साथ संवाद करने के लिए जीयूआई को फिर से शुरू करना होगा।

क्या कोई ऐसी स्क्रिप्ट है जो एक सुखद माध्यम है, जहां मैं इसे लॉन्च कर सकता हूं, और यह उपयोगकर्ता द्वारा ली गई छवि के फ़ाइल नाम को मुद्रित करता है?

+0

'sudo apt-get इंस्टॉलर प्राप्त करें ' – wim

+1

यह भी देखें: [मैं पाइथन के साथ कैमरा छवियों को कैसे ले सकता हूं?] (Http://stackoverflow.com/q/28418962/562769) –

उत्तर

12

यदि आप पाइथन के माध्यम से ऐसा करना चाहते हैं, तो ऐसा लगता है कि आपके पास कुछ विकल्प हैं। The Pygame library has the ability to access cameras

यदि यह असंतोषजनक है, तो आप Python's fcntl library का उपयोग कर सीधे ioctl कॉल का उपयोग करके Video 4 Linux 2 API तक पहुंच सकते हैं और Video 4 Linux 2 API तक पहुंच सकते हैं।

+0

Pygame लाइब्रेरी के लिए लिंक अब गलत है । अनुरोध किया गया URL /docs/tut/camera/CameraIntro.html सर्वर पर नहीं मिला था। – Andark

35

मुझे उस के लिए pygame का उपयोग करना पसंद है - यह आपको एक पायगम एसडीएल विंडो खोलने की आवश्यकता नहीं है, उदाहरण के लिए, जब आप इसे कीबोर्ड ईवेंट कैप्चर करने के लिए उपयोग करना चाहते हैं।

import pygame.camera 
pygame.camera.init() 
cam = pygame.camera.Camera(pygame.camera.list_cameras()[0]) 
cam.start() 
img = cam.get_image() 
import pygame.image 
pygame.image.save(img, "photo.bmp") 
pygame.camera.quit() 

हालांकि pygame केवल "bmp" फ़ाइलें असम्पीडित की बचत होगी - आप जनहित याचिका के साथ गठबंधन करने के लिए अन्य प्रारूपों में लिखने के लिए चाहते हो सकता है।

+2

अब तक, pygame png, jpg, tiff और bmp में सहेज सकता है। कम से कम टॉस वे परीक्षण किए गए थे। बस एक्सटेंशन को बदलें और पायगम इसे पहचानता है। – steffen

+0

pygame.camera.quit() काम नहीं करता है; इसके बजाय cam.stop() का उपयोग करें। – ingroxd

संबंधित मुद्दे