.. title:: Pythonã§å¿ƒç†å®Ÿé¨“ - 例題17-3 例題17-3:複数ã®Webã‚«ãƒ¡ãƒ©ã‚’åŒæ™‚ã«ä½¿ã† ============================================ **A:** ã•ã¦ã€æœ€å¾Œã¯æ°—楽ã«éŠã³ã¾ã™ã‹ã€‚予告通り複数å°ã®webã‚«ãƒ¡ãƒ©ã‚’åŒæ™‚ã«ä½¿ã£ã¦ã¿ã‚‹ã€‚ã‚‚ã†ã¡ã‚‡ã£ã¨é«˜ã„パフォーマンスãŒå‡ºã‚‹ã‹ã¨æ€ã£ã¦ã„ãŸã‘ã©ã¡ã‚‡ã£ã¨æœŸå¾…外れã ã£ãŸã€‚一部ã¾ã 解説ã—ãŸã“ã¨ãŒãªã„機能を使ã£ã¦ã„ã‚‹ãŒã€åŸºæœ¬çš„ãªãƒã‚¤ãƒ³ãƒˆã¯è§£èª¬æ¸ˆã¿ãªã‚‚ã®ã°ã‹ã‚Šã ã‹ã‚‰å¤šåˆ†ä½•も難ã—ã„ã“ã¨ã¯ãªã„ã¨æ€ã†ã€‚ **B:** ã†ã£ã€ã„ããªã‚Šãƒ—レッシャー。 + 行番å·ãªã—ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰â†’ `17-5.py <source/17-5.py>`_ .. literalinclude:: source/17-5.py :language: python :encoding: shift-jis :linenos: :lineno-match: **A:** ã“ã®ã‚µãƒ³ãƒ—ルã§ã¯3å°ã®webã‚«ãƒ¡ãƒ©ã‚’åŒæ™‚ã«ä½¿ç”¨ã™ã‚‹ã€‚å‹•ã‹ã—ã¦ã¿ãŸã„人ã¯ãœã²ãªã‚“ã¨ã‹3å°ã®webカメラをã‹ã集ã‚ã¦ãã ã•ã„。例ã«ã‚ˆã£ã¦ç”»é¢ã«ç¾åœ¨ã®ãƒ•レーム番å·ãŒè¡¨ç¤ºã•れるã®ã§ã€3å°ã¨ã‚‚ç”»é¢ã«å‘ã‘ã¦æ’®å½±ã—ã¦ã¿ã‚‹ã‹ã€‚Bãã‚“ã¡ã‚‡ã£ã¨æ‰‹ä¼ã£ã¦ã€‚ **B:** ã¯ã„ã¯ã„ã€ã“ã£ã¡ã®ãƒãƒ–ã«ã¤ãªã„ã らã„ã„ã§ã™ã? **A:** ã‚ーã€ãれã¯PC本体ã®ãƒ•ãƒãƒ³ãƒˆãƒ‘ãƒãƒ«ã®USBãƒãƒ¼ãƒˆã«ã¤ãªã„ã§ãれãŸã¾ãˆã€‚ç†ç”±ã¯å¾Œã§èª¬æ˜Žã™ã‚‹ã€‚ **B:** ãˆã£ã¨ã€ã˜ã‚ƒã‚ã“ã£ã¡ã«ã¾ã‚ã—ã¦â€¦ã€ã‚ã‚ã£ã€ã²ã£ã‹ã‘ã¦å€’ã—ã¡ã‚ƒã£ãŸã€‚ **A:** ãšã¼ã‚‰ã›ãšã«ä¸€åº¦ã“ã£ã¡ã‹ã‚‰é€šã—ãŸã¾ãˆã€‚ã“ã†ã‚„ã£ã¦â€¦ã¨ã€ã¾ã‚ã“ã‚“ãªã‚‚ã‚“ã ã‚。 **B:** ã˜ã‚ƒã‚実行ã—ã¾ã™ã‚ˆãƒ¼ã€‚ãれã£ã€‚ **A:** ã†ãƒ¼ã‚“ã€ã‚‚ã†ã¡ã‚‡ã£ã¨ã‚«ãƒ¡ãƒ©ã‚’è¿‘ã¥ã‘ãªã„ã¨æ•°å—ãŒèªã‚ãªã„ãªã€‚ã¾ã‚今回ã¯ã“れã§ã„ã„ã‹ã€‚ **B:** ã‚れã€ãªã‚“ã ã‹å¦™ã«æ•°å—ãŒã‚†ã£ãりã—ã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ **A:** ãã®ç†ç”±ã‚‚説明ã™ã‚‹ã‚ˆã€‚é©å½“ãªã¨ã“ã‚ã§ã‚¹ãƒˆãƒƒãƒ—ã—ã¦ã€ä¿å˜ã•れãŸå‹•画をå†ç”Ÿã—ã¦ã€‚é©å½“ãªã¨ã“ã‚ã§ä¸€æ™‚åœæ¢ã—ã¦ãれ。 **B:** ã¯ã„ã¯ã„。…ãˆãƒ¼ã¨ã€ã“ã‚“ãªã‚‚ã‚“ã‹ãªï¼Ÿ .. figure:: img/17-3-01.jpg **A:** ã“ã®ã‚µãƒ³ãƒ—ルã§ã¯3å°ã®webカメラã‹ã‚‰ç”»åƒã‚’å–å¾—ã—ã¦ã€å‹•ç”»ã®å·¦ä¸Šã€å³ä¸Šã€å·¦ä¸‹ã«é…ç½®ã—ã¦ã„る。å³ä¸‹ã¯VisionEggã®ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ãƒãƒƒãƒ•ã‚¡ã‚’èªã¿ã ã—ã¦ç¸®å°ã—ã¦é…ç½®ã—ã¦ã„る。è¦ã™ã‚‹ã«ã€ä»Šã¾ã•ã«PCã‹ã‚‰ãƒ‡ã‚£ã‚¹ãƒ—レイã«é€ä¿¡ã•れãŸç”»é¢ã®å†…容ã®ã‚³ãƒ”ーã 。 **B:** ã¸ãˆãˆã€‚ã“ã‚“ãªã“ã¨å‡ºæ¥ã‚‹ã‚“ã 。ã§ã‚‚ã“れã€ã‚«ãƒ¡ãƒ©ç”»åƒã¨ãšã„ã¶ã‚“数値ã«é–‹ããŒã‚りã¾ã™ã‚ˆã。カメラ画åƒã«æ˜ ã£ã¦ã‚‹å€¤ã¯569ã«è¦‹ãˆã‚‹ã‘ã©ã€å³ä¸‹ã¯573ã 。 **A:** PCã‹ã‚‰ãƒ‡ã‚£ã‚¹ãƒ—レイã«ãƒ‡ãƒ¼ã‚¿ãŒé€ä¿¡ã•れã¦ã€ãれãŒå®Ÿéš›ã«è¡¨ç¤ºã•れã¦ã€ã•らã«ãれãŒã‚«ãƒ¡ãƒ©ã«æ’®å½±ã•れã¦ã€PCã«é€ã‚‰ã‚Œã¦ãã¦ã€ã£ã¦çµŒè·¯ã‚’ãŸã©ã‚‹ã¨ãれã ã‘ラグãŒã‚ã‚‹ã£ã¦ã“ã¨ã ãªã€‚別ã«ã“ã†ã„ã†äº‹ã‚’調ã¹ãŸãã¦å§‹ã‚ãŸä¼ç”»ã˜ã‚ƒãªã„ã‚“ã ã‘ã©ãªã‹ãªã‹èˆˆå‘³æ·±ã„。 **B:** ディスプレイã¯60fpsã ã‹ã‚‰4フレームã®ãšã‚Œã¯â€¦ã€ãˆãˆã¨ã€66msãらã„ã§ã™ã‹ã€‚ã©ã®æ™‚点ã§ä¸€ç•ªæ™‚間を食ã£ã¦ã„ã‚‹ã‚“ã§ã™ã‹ã? **A:** ã•ã‚? ãれãŒã‚ã‹ã£ãŸã‚‰é¢ç™½ã„ãŒãã“ã«çœŸã£å‘å‹è² ã‚’æŒ‘ã‚€æ ¹æ€§ã‚‚æ©Ÿæã‚‚ç§ãæŒã¡åˆã‚ã›ã¦ã„ãªã„ãªã€‚æ°—ãŒå‘ã„ãŸã‚‰å°‘ã—çªã£ã¤ãã“ã¨ã¯ã‚ã‚‹ã‹ã‚‚知れんãŒã€‚ **B:** ã†ãƒ¼ã‚“ã€ã™ã”ã„世界ã ãªã‚。 **A:** プãƒã‚°ãƒ©ãƒ ã®è§£èª¬ã‚’å°‘ã—。15行目ã‹ã‚‰20行目ã¯ã‚«ãƒ¡ãƒ©ã®åˆæœŸåŒ–。VideoCapture.Device()ã®å¼•æ•°ã‚’0ã€1ã€2ã¨é †ç•ªã«æŒ‡å®šã™ã‚‹ã¨PCã«æŽ¥ç¶šã•れã¦ã„ã‚‹webã‚«ãƒ¡ãƒ©ã‚’é †ç•ªã«é–‹ã„ã¦ã„ã。ã©ã®ã‚«ãƒ¡ãƒ©ãŒä½•番目ã«ãªã‚‹ã‹ã¯OSãŒæ±ºã‚ã‚‹ã‚“ã§å‹•ã‹ã—ã¦ã¿ãªã„ã¨ã‚ã‹ã‚‰ã‚“。戻り値ã®VideoCapture.Deviceã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’後ã§ä½¿ã„ã‚„ã™ã„よã†ã«ãƒªã‚¹ãƒˆã«æ”¾ã‚Šã“ã‚“ã§ã‚る。 **B:** try - exceptæ–‡ã¯ï¼Ÿ **A:** ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯æœ€çµ‚çš„ã«ä¿å˜ã™ã‚‹å‹•画ファイルを640x480ã«ã—ã¦ã„ã¦ã€å€‹ã€…ã®ã‚«ãƒ¡ãƒ©ç”»åƒã¯320x240ã«ã—ã¦ã„る。カメラã‹ã‚‰å–å¾—ã™ã‚‹æ™‚点ã§320x240ã«è¨å®šã§ãれã°å¸¯åŸŸå¹…を節約ã§ãã‚‹ã‚“ã§ãœã²è¨å®šã—ã¦ãŠããŸã„ã¨ã“ã‚ã ãŒã€ã‚«ãƒ¡ãƒ©ã«ã‚ˆã£ã¦ã¯ã“ã®è§£åƒåº¦ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„å ´åˆãŒã‚る。ãã“ã§ã‚¨ãƒ©ãƒ¼ãŒèµ·ããŸã¨ãã«æ¢ã¾ã£ã¦ã—ã¾ã‚ãªã„よã†ã«try文を使ã£ã¦ã„ã‚‹ã‚ã‘ã 。 **B:** ãˆï¼Ÿ è§£åƒåº¦ã®è¨å®šã«å¤±æ•—ã—ã¦ã‚‚ãã®ã¾ã¾å…ˆã«é€²ã‚“ã§ã„ã„ã‚“ã§ã™ã‹ï¼Ÿ ãれã‹ã‚‰å¸¯åŸŸå¹…ã£ã¦ã„ã†ã®ã¯ï¼Ÿ **A:** 一気ã«è³ªå•ã™ã‚‹ãªã€‚ã¾ãšè§£åƒåº¦ã®è¨å®šã«å¤±æ•—ã—ãŸå ´åˆã ãŒã€å˜ã«ã‚«ãƒ¡ãƒ©ã®æ¨™æº–ã®è§£åƒåº¦ã§ãƒ‡ãƒ¼ã‚¿ãŒé€ã‚‰ã‚Œã¦ãる。ãã†ã„ã†äº‹æ…‹ãŒç”Ÿã˜ãŸå ´åˆã‚’考慮ã—ã¦60行目ã‹ã‚‰62行目ã§è§£åƒåº¦ã®å¤‰æ›´å‡¦ç†ã‚’ã—ã¦ã„ã‚‹ã‚“ã ãŒã€ãã®è©±ã¯ã¾ãŸå¾Œã§ã€‚ãˆãˆã¨ã€ã‚‚ã†ä¸€ã¤ã¯â€¦ **B:** 帯域幅。 **A:** 帯域幅ã‹ã€‚è¦ã™ã‚‹ã«ãƒ‡ãƒ¼ã‚¿ã‚’転é€ã™ã‚‹ã¨ãã«ã€ã©ã®ãらã„ã®ãƒšãƒ¼ã‚¹ã§ãƒ‡ãƒ¼ã‚¿ã‚’転é€ã§ãã‚‹ã‹ã£ã¦è©±ã 。水をæµã™ã®ã¨åŒã˜ã ãªã€‚é¢¨å‘‚ã®æ°´ã‚’入れ替ãˆã‚‹ã¨ãã«ã€æ “を抜ã„ã¦ã‚‚排水æºã®å¹…ãŒé™ã‚‰ã‚Œã¦ã„ã‚‹ã‹ã‚‰ä¸€å®šã®ãƒšãƒ¼ã‚¹ã§ã—ã‹æ°´ã¯æµã‚Œãªã„。 **B:** é¢¨å‘‚ã®æ°´ãŒæ¸›ã£ã¦ããŸã‚‰æ°´åœ§ãŒä¸‹ãŒã£ã¦ä¸€å®šã®ãƒšãƒ¼ã‚¹ã˜ã‚ƒãªããªã‚‹ã¨æ€ã†ã‚“ã§ã™ãŒã€‚ **A:** ã†ã‚‹ã•ã„。ã¨ã«ã‹ãæ°´é“ã«ã¯ä¸€å®šæ™‚é–“ã«ã“れã ã‘ã—ã‹æ°´ã‚’æµã›ã¾ã›ã‚“ã£ã¦ã„ã†é™ç•ŒãŒã‚る。PCã«ãŠã‘るデータ転é€ã‚‚åŒã˜ã“ã¨ã€‚webカメラãŒãƒ‡ãƒ¼ã‚¿è»¢é€ã«ä½¿ã†USB2.0ã®å¸¯åŸŸå¹…ã¯ç†è«–上480Mbpsã 。 **B:** ãµãƒ¼ã‚“ã€å¸¯åŸŸå¹…ã£ã¦ã„ã†ã®ã‹ã€‚覚ãˆã¦ãŠã“ã†ã€‚ **A:** ã†ãƒ¼ã‚“ã€ç¿’慣的ã«å¸¯åŸŸå¹…ã£ã¦è¨€ã†ã‚“ã ã‘ã©ã€ã©ã†ã‚‚ã‚ã¾ã‚Šé©åˆ‡ãªä½¿ã„æ–¹ã§ã¯ãªã„よã†ã ã‹ã‚‰ãŸã 覚ãˆã‚‰ã‚Œã¦ã‚‚å›°ã‚‹ã‹ãªã€‚ **B:** ã¸ï¼Ÿ **A:** ã„ã‚„ã€è„±ç·šãŒã²ã©ããªã‚‹ã‹ã‚‰è©³ã—ãã¯èª¬æ˜Žã—ãªã„ã‘ã©ã€ã“ã®è¾ºã‚Šã®è¨€è‘‰ä½¿ã„ã¯çµæ§‹é›£ã—ã„ã‚“ã よã。繰り返ã™ã‘ã©ç¿’慣的ã«å¸¯åŸŸå¹…ã¨è¨€ã†ã‚“ã§ã“ã“ã§ã¯ãã†è¨€ã£ã¦ãŠãã‘ã©ã€ã‚ˆã‹ã£ãŸã‚‰è‡ªåˆ†ã§èª¿ã¹ã¦ã¿ã¦ãれ。 **B:** んー。習慣的ã«ä½¿ã†ã‚“ãªã‚‰ã¼ãã¯ãれã§ã„ã„ã§ã™ã€‚ **A:** ãã†ã‹ã€‚ã‚“ã§å¸¯åŸŸå¹…ã ãŒã€USB2.0ã¯480Mbps。bpsã¯bit毎秒ã®ã“ã¨ãªã‚“ã§ã€byteã«ç›´ã™ã¨60MB/s。今回使用ã—ãŸã‚«ãƒ¡ãƒ©ã¯å…¨éƒ¨640x480ãŒæ¨™æº–è§£åƒåº¦ãªã‚“ã ãŒã€640x480ã§1ピクセル4byteã ã¨ã™ã‚‹ã¨640x480x4=ç´„1.23MB(1k=1000ã§è¨ˆç®—)。30fpsãªã‚‰1ç§’ã‚ãŸã‚Šã“れを30回é€ã‚‰ãªã„ã¨ã„ã‘ãªã„ã‹ã‚‰x30ã§ç´„36.9MB/s。カメラãŒ3å°ã‚ã‚‹ã‚“ã ã‹ã‚‰x3ã§ç´„111MB/s。 **B:** ã‚れã€60MB/sã‚’è¶…ãˆã¡ã‚ƒã£ãŸã˜ã‚ƒãªã„ã§ã™ã‹ã€‚ **A:** ãã†ã€‚è¶…ãˆã‚‹ã‚“ã よ。ã ã‹ã‚‰640x480ã€30fpsã®ã‚«ãƒ¡ãƒ©3å°ã®ç”»åƒã‚’USB2.0ã§è»¢é€ã™ã‚‹ã®ã¯ç„¡ç†ãªã‚“ã よ。 **B:** ã§ã‚‚サンプルプãƒã‚°ãƒ©ãƒ ã¯å‹•ã„ã¦ã‚‹ã‚“ã§ã™ã‚ˆãã€ãªã‚“ã§ï¼Ÿ **A:** ã ã‹ã‚‰ãã®ãŸã‚ã«è§£åƒåº¦ã‚’320x240ã«ã—ãŸã£ã¦è¨€ã£ã¦ã‚‹ã ã‚。340x240ãªã‚‰å˜ç´”計算ã§640x480ã®1/4ã«ãªã‚‹ã‹ã‚‰111÷4≒約27.7MB/s。実際ã«ã¯ä»Šå›žä½¿ã£ãŸã‚«ãƒ¡ãƒ©ã®ã†ã¡1å°ã¯320x240ã«å¤‰æ›´ã§ããªã„機種ã ã‹ã‚‰ãã„ã¤ã¯ç´„36.9MB/sã€æ®‹ã‚Š2å°ã¯ãれãžã‚Œç´„9.2MB/sã€å…¨éƒ¨åˆã‚ã›ã¦55.3MB/s。 **B:** ãŠãŠãƒ¼ã€ã‚®ãƒªã‚®ãƒªã§ã—ãŸã。 **A:** 実ã¯ã“ã® **USB2.0ã®æœ€å¤§è»¢é€é€Ÿåº¦ã¯ãƒ›ã‚¹ãƒˆã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ãƒ¼1ã¤ã‚ãŸã‚Šã®æ•°å€¤ãªã®ã§ã€è¤‡æ•°ã®ãƒ›ã‚¹ãƒˆã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ãŒã‚ã‚‹PCãªã‚‰åˆ¥ã€…ã®ãƒ›ã‚¹ãƒˆã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ãƒ¼ã«æŽ¥ç¶šã™ã‚Œã°ã•らã«å¤šãã®ã‚«ãƒ¡ãƒ©ã‚’接続ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹** 。 **B:** USBã®ãƒ›ã‚¹ãƒˆã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ãƒ¼ï¼Ÿ ãªã‚“ã§ã™ã‹ãれ。 **A:** PCã®å†…éƒ¨ã«æè¼‰ã•れã¦ã„ã‚‹LSIã 。デãƒã‚¤ã‚¹ãƒžãƒãƒ¼ã‚¸ãƒ£ã§ã“ã‚“ãªé¢¨ã«ç¢ºèªã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹ã€‚「詳細è¨å®šã€ã‚’見ãŸã‚‰å®Ÿéš›ã«ã©ã‚Œã ã‘帯域幅を食ã£ã¦ã„ã‚‹ã‹ã‚‚ã‚ã‹ã‚‹ãžã€‚ .. figure:: img/17-3-02.png **B:** ã¸ãˆã€ã“ã‚“ãªç”»é¢åˆã‚ã¦è¦‹ã¾ã—ãŸã€‚webカメラã¯1%ã—ã‹ä½¿ã£ã¦ã„ã¾ã›ã‚“ãŒã€‚ **A:** ä»Šã¯æ’®å½±ã—ã¦ãªã„ã‹ã‚‰å¸¯åŸŸå¹…を使ã£ã¦ãªã„ã®ã¯å½“ãŸã‚Šå‰ã ã‚。 **B:** ã‚ã€ãã†ã‹ã€‚ãれã«ã—ã¦ã‚‚システムã«ã‚ˆã‚Šäºˆç´„済ã¿ã£ã¦ã®ãŒ20%ã‚‚ã‚ã‚‹ã‚“ã§ã™ã。ã¨ã„ã†ã“ã¨ã¯60MB/sã‚’å…¨ã¦webカメラã«ã¯ä½¿ãˆãªã„ã¨ã„ã†ã“ã¨ï¼Ÿ **A:** ãã®é€šã‚Šã€‚æã‚‰ãwebカメラ自身も画åƒãƒ‡ãƒ¼ã‚¿ä»¥å¤–ã«ãƒ‡ãƒ¼ã‚¿ã‚’やりå–りã—ã¦ã„ã‚‹ã¯ãšã ã‹ã‚‰ã€ã•らã«ç”»åƒãƒ‡ãƒ¼ã‚¿è»¢é€ã«ä½¿ãˆã‚‹å¸¯åŸŸå¹…ã¯ç‹ããªã‚‹ã€‚ **B:** ã˜ã‚ƒã‚ã•ã£ãã®55.3MB/sã£ã¦ã®ã¯ã‚ªãƒ¼ãƒãƒ¼ã—ã¦ã‚‹ã‚“ã˜ã‚ƒãªã„ã‚“ã§ã™ã‹ï¼Ÿ 60MB/sã®20%ã¯12MB/sã§ã€20%ã¯ã‚·ã‚¹ãƒ†ãƒ ãŒä½¿ã£ã¡ã‚ƒã¦ã„ã‚‹ã‚“ã§ã™ã‚ˆã? **A:** ã ã‹ã‚‰ã•ã£ãwebカメラをã¤ãªãã¨ãã«ã€ã©ã“ã«ã¤ãªãã‹æŒ‡ç¤ºã—ãŸã ã‚。ã“ã®PCã¯ãƒãƒƒã‚¯ãƒ‘ãƒãƒ«ã®USBãƒãƒ¼ãƒˆã¨ãƒ•ãƒãƒ³ãƒˆãƒ‘ãƒãƒ«ã®USBãƒãƒ¼ãƒˆã¯ãれãžã‚Œåˆ¥ã®ãƒ›ã‚¹ãƒˆã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ãƒ¼ã«æŽ¥ç¶šã•れã¦ã„る。複数ã®ãƒ›ã‚¹ãƒˆã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ãƒ¼ã«åˆ†æ•£ã•ã›ãŸã‚“ã よ。 **B:** ãªã‚‹ã»ã©ã€ãã‚“ãªé…æ…®ãŒã€‚ **A:** ä»–ã«ã‚‚カメラã«ã‚ˆã£ã¦ã¯ã‚«ãƒ¡ãƒ©å†…部ã§å‹•画を圧縮ã—ã¦è»¢é€ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã®ã‚µã‚¤ã‚ºã‚’å°ã•ãã—ã¦ã€PCå´ã§å¾©å…ƒã—ã¦ã£ã¦ã®ã‚’ã‚„ã£ã¦ã„る。1920x1080ã§30fpsã®ãƒ•ルãƒã‚¤ãƒ“ジョン動画を撮れるwebカメラãªã‚“ã‹ã‚‚販売ã•れã¦ã„ã‚‹ãŒã€åŒã˜ã‚ˆã†ã«è¨ˆç®—ã—ãŸã‚‰ãれã ã‘ã§248.8MB/sã ã‹ã‚‰çµ¶å¯¾ã«USB2.0ã˜ã‚ƒè»¢é€ã§ããªã„。 **B:** ã†ã¸ãˆã€æš´åŠ›çš„ãªæ•°å—ã ãªã€‚ **A:** 今回ã¯ç°¡å˜ã«è§£èª¬ã‚’済ã¾ã›ã‚‹ã¤ã‚‚りã ã£ãŸãŒé•·ããªã‚Šãã†ã ãªã“りゃ。ã¨ã«ã‹ããã‚“ãªã‚ã‘ã§320x240ã«è¨å®šã§ãるカメラã§ã‚れã°ãã†è¨å®šã—ã¦ãŠã“ã†ã¨ã„ã†ã®ãŒ15ã‹ã‚‰20行目。22行目ã¯å„カメラã®ç”»åƒã‚’張り付ã‘ã‚‹ãŸã‚ã®Image.Imageã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã—ã¦ã„る。ã‚ã¨ã¯å¤§ä½“å‰å›žã¨åŒã˜ãªã®ã§ã™ã£é£›ã°ã—ã¦ã€60ã‹ã‚‰64行目。ã“ã“ã®ãƒã‚¤ãƒ³ãƒˆã¯Image.Imageã®ãƒ¡ã‚½ãƒƒãƒ‰pasteã¨resize。getImageã®æˆ»ã‚Šå€¤ã‚‚Image.Imageã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãªã‚“ã ã‹ã‚‰ã€Image.Imageã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚ã‚‹resizeã‚’ãã®ã¾ã¾ä½¿ãˆã‚‹ã€‚ã“れã§ç¢ºå®Ÿã«320x240ã«ã—ã¦ãŠã„ã¦ã€è²¼ã‚Šä»˜ã‘å…ˆã®Image.Imageインスタンスã®ãƒ¡ã‚½ãƒƒãƒ‰pasteã«æ¸¡ã™ã€‚pasteã¯è²¼ã‚Šä»˜ã‘å…ˆã®ç”»åƒã‹ã‚‰å®Ÿè¡Œã—ã¦ã€å¼•æ•°ã«è²¼ã‚Šä»˜ã‘å…ƒã®ç”»åƒã¨è²¼ã‚Šä»˜ã‘ä½ç½®ã‚’示ã™ã‚¿ãƒ—ルを指定ã™ã‚‹ã€‚ä»–ã«ã‚‚指定ã§ãる引数ãŒã‚ã‚‹ã‘ã©ãれã¯helpを見ã¦ãれ。 **B:** ãˆãˆã¨ã€boxã£ã¦ã„ã†å¼•æ•°ãŒè²¼ã‚Šä»˜ã‘ä½ç½®ã§ã™ã‹ï¼Ÿ **A:** ã‚ã€å¤±ç¤¼ã€‚ãã®é€šã‚Šã€‚ **B:** 60行目ã‹ã‚‰62行目ã§3å°ã®ã‚«ãƒ¡ãƒ©ã®ç”»åƒã‚’ãれãžã‚Œè²¼ã‚Šä»˜ã‘ã¦ã„ã‚‹ã‚“ã§ã™ã。ã§ã€63行目ã¯ï¼Ÿ **A:** ã“ã®get_framebuffer_as_image㯠:doc:`例題8-3 <08-3>` ã§ä¸€åº¦å‡ºã¦ãã¦ã„ã‚‹ã‚“ã ãŒã€ã¾ã‚覚ãˆã¦ã„ãªã„よãªã€‚VisionEggã§ç¾åœ¨è¡¨ç¤ºã—ã¦ã„ã‚‹ç”»é¢ã®ãƒãƒƒãƒ•ã‚¡ã‚’èªã¿ã ã™ãƒ¡ã‚½ãƒƒãƒ‰ã 。戻り値ã¯Image.Imageã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãªã‚“ã§åŒã˜ã‚ˆã†ã«resizeã—ã¦pasteã™ã‚Œã°ã‚ˆã„。以上ã§è§£èª¬ã¯ãŠã—ã¾ã„。 **B:** ãµã†ã€ãªã‹ãªã‹å¤§å¤‰ã§ã—ãŸã€‚ **A:** …ãã®æ§˜åã ã¨ã™ã§ã«å¿˜ã‚Œã¦ã„ã‚‹ãªï¼Ÿ **B:** ã¸ï¼Ÿ 何をã§ã™ï¼Ÿ **A:** ãªãœVisionEggã§è¡¨ç¤ºã—ã¦ã„ã‚‹ç¾åœ¨ã®ãƒ•レーム番å·ãŒã‚†ã£ãりãªã®ã‹ã£ã¦ã“ã¨ã よ。 **B:** ã‚ã‚ï¼ ã™ã£ã‹ã‚Šå¿˜ã‚Œã¦ã„ã¾ã—ãŸã€‚ **A:** ã“ã“ã¾ã§ã®è©±ãŒé•·ã‹ã£ãŸã‹ã‚‰ãªã€‚フレーム番å·ãŒã‚†ã£ãりã«ãªã£ã¦ã—ã¾ã†ç†ç”±ã¯å˜ç´”。動画ファイルã¸ã®æ›¸ã出ã—ã®ä½œæ¥ãŒé–“ã«åˆã£ã¦ã„ãªã„ã‹ã‚‰ã よ。log.csvã‚’é–‹ã„ã¦2行目以é™ã®ã‚¿ã‚¤ãƒ スタンプã®å·®åˆ†ã‚’見ã¦ã¿ãŸã¾ãˆã€‚ **B:** ãˆãˆã£ã¨ã€ã‚‚ã†Excelã§ã„ã„ã§ã™ã‚ˆã。ã”ã«ã‚‡ã”ã«ã‚‡ã€‚ **A:** …。 **B:** ã‚れ? ãªã‚“ã ã‹ãƒ•レームã®é–“éš”ãŒçŸã„ã®ã¨é•·ã„ã®ãŒäº¤äº’ã«ä¸¦ã‚“ã§ã„ã¾ã™ã‚ˆï¼Ÿ çŸã„æ–¹ã¯ã ã„ãŸã„0.03ã ã‹ã‚‰ã€é•·ã„æ–¹ãŒé…れã¦ã„ã‚‹ã®ã‹ã€‚ **A:** ãã†ã€‚ç†ç”±ã¯ã‚ã‹ã‚‹ã‹ï¼Ÿ **B:** 2フレームã«1回書ã出ã—ã‚’ã—ã¦ã„ã‚‹ã‚“ã ã‹ã‚‰ã€æ›¸ã出ã—ãŒåŽŸå› ï¼Ÿ **A:** 何ã§ä»Šå›žã®æ›¸ã出ã—ã«ã¯ãã‚“ãªã«æ™‚é–“ãŒã‹ã‹ã‚‹ã‹ã‚ã‹ã‚Œã°åˆæ ¼ã€‚ **B:** ãˆï¼Ÿ ãˆãƒ¼ã¨ã€ãªã‚“ã ã‚ã†ã€‚カメラãŒãŸãã•ã‚“ã‚ã‚‹ã‹ã‚‰ï¼Ÿ **A:** ã†ã‚€ã€‚確ã‹ã«ã‚«ãƒ¡ãƒ©ã®å°æ•°ãŒå¢—ãˆã‚‹ã¨ãれã ã‘処ç†ã¯é‡ããªã‚‹ãŒã€ã“ã“ã§ã®çŠ¯äººã¯get_framebuffer_as_image。ã“ã„ã¤ãŒçŒ›çƒˆã«æ™‚間を食ã†ã‚“ã 。 **B:** ã¸ãƒ¼ã€‚ãã†ãªã‚“ã§ã™ã‹ã€‚ **A:** ã“ã“ã§è€ƒãˆã‚‰ã‚Œã‚‹å¯¾ç–ãŒäºŒã¤ã€‚第一ã¯ã€å‹•ç”»ã®ãƒ•レームレートを下ã’ã‚‹ã“ã¨ã€‚今ã¯30fpsã§ã‚„ã£ã¦ã„ã‚‹ãŒã€60ã®ç´„æ•°ãªã‚‰ç°¡å˜ã«å¤‰æ›´ã§ãã‚‹ã‚“ã ã‹ã‚‰15fpsã¨ã‹10fpsã«ã™ã‚‹ã€‚第二ã¯get_framebuffer_as_imageを使ã†ã®ã‚’諦ã‚る事。実験ã«ä½¿ã†å ´åˆã€å®Ÿéš›ã«å‡ºã—ã¦ã„ã‚‹VisionEggã®ç”»é¢ãã®ã‚‚ã®ã‚’ä¿å˜ã—ã¦ãŠã‘ã‚‹ã¨ã„ã†ã®ã¯ãƒ¡ãƒªãƒƒãƒˆã ãŒã€ä»Šã©ã‚“ãªåˆºæ¿€ãŒå‡ºã¦ã„ã‚‹ã‹ã‚ã‹ã‚Œã°ã„ã„ã£ã¦ç”¨é€”も多ã„ã ã‚ã†ã€‚ãã‚“ãªå ´åˆã¯ã€å‹•ç”»ã®ã©ã“ã‹ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’書ã込んã§ãŠã‘ã°ã„ã„。 **B:** ãã‚“ãªã“ã¨ãŒå‡ºæ¥ã‚‹ã‚“ã§ã™ã‹ã€‚ **A:** PILã®ImageDrawを使ãˆã°ç°¡å˜ãªã“ã¨ã 。ãã‚“ãªã‚ã‘ã§æ›¸ãç›´ã—ãŸã‚µãƒ³ãƒ—ルãŒã“れ。 + 行番å·ãªã—ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰â†’ `17-6.py <source/17-6.py>`_ .. literalinclude:: source/17-6.py :language: python :encoding: shift-jis :linenos: :lineno-match: **A:** ã»ã¨ã‚“ã©å¤‰ã‚ã£ã¦ã„ãªã„ã‚“ã§ã‚ã¾ã‚Šè§£èª¬ã™ã‚‹ã“ã¨ã¯ãªã„。ã¾ãš3行目ã§ImageDrawã‚’import。ImageDraw㯠:doc:`例題8-2 <08-2>` 〠:doc:`8-3 <08-3>` ã§å‡ºã¦ãã¦ã„ã‚‹ãŒã€Image.Imageå½¢å¼ã®ç”»åƒã«å›³å½¢ã‚„æ–‡å—ã‚’æç”»ã™ã‚‹ãŸã‚ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã€‚23行目ã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å‡ºåŠ›ç”¨ã®å°ã•ãªImageを作ã£ã¦ãŠã„ã¦ã€24行目ã§ImageDraw.Drawクラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã—ã¦æ›¸ãè¾¼ã¿æº–備を済ã¾ã›ã¦ãŠã。詳ã—ãã¯ä¾‹é¡Œ8-2を見ã¦ã»ã—ã„。ã„ã‚„ã€ä¾‹é¡Œ8-2ã¯å¤§ã—ã¦è©³ã—ããªã„ã®ã§æ¤œç´¢ã™ã‚‹æ–¹ãŒã„ã„。 **B:** ã¡ã‚‡ã£ã¨ã¯è‡ªåˆ†ã§è§£èª¬ã—ã¾ã—ょã†ã‚ˆâ€¦ **A:** (無視ã—ã¦)26行目ã‹ã‚‰ã¯ffmpegã®èµ·å‹•コマンドã ãŒã€ã¡ã‚‡ã£ã¨æ¬¡ã®å¸ƒçŸ³ã¨ã—ã¦MPEG1ã˜ã‚ƒãªãã¦H.264ã§ä¿å˜ã™ã‚‹ã‚ˆã†ã«æ›¸ãæ›ãˆã¦ã„る。細ã‹ã„パラメータã¯ã‚°ã‚°ã£ã¦è¦‹ã¤ã‘ãŸãƒšãƒ¼ã‚¸ã‹ã‚‰æ‹å€Ÿã—ãŸã‚‚ã®ã ã‘ã©ã€ã©ã®ãƒšãƒ¼ã‚¸ã ã£ãŸã‹ã‚ã‹ã‚“ãªããªã£ã¦ã—ã¾ã£ãŸã€‚ **B:** (ã¯ãƒ¼ã£) **A:** ã§ã€å¾Œã¯72行目。メッセージ出力用ã®ãƒŸãƒ‹ç”»åƒã«é»’ã„長方形をæã„ã¦å¡—りã¤ã¶ã—ã¦ã„る。ã“ã†ã—ãªã„ã¨å‰ã«å‡ºåŠ›ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒæ®‹ã£ã¡ã‚ƒã†ã‹ã‚‰ã。rectangle()ã®å¼•æ•°ã¯ã¾ã‚ã ã„ãŸã„ã‚ã‹ã‚‹ã¨æ€ã†ã‚“ã ã‘ã©ã€æœ€åˆã®ã‚¿ãƒ—ルã¯é•·æ–¹å½¢ã®å·¦ä¸Šã€å³ä¸‹ã®X座標ã€Yåº§æ¨™ã‚’é †ç•ªã«ä¸¦ã¹ãŸã‚‚ã®ã€‚fillã«ä¸Žãˆã¦ã„ã‚‹æ–‡å—列ã¯å¡—りã¤ã¶ã—ã«ä½¿ã†è‰²ã®æŒ‡å®šã€‚HTMLを知ã£ã¦ã„る人ã¯ã™ã†ããƒ”ãƒ³ã¨æ¥ãŸã¨æ€ã†ã‘ã©ã€Rã€Gã€Bã®é †ã«16é€²æ•°ã§æ˜Žã‚‹ã•を指定ã™ã‚‹ã€‚赤ãªã‚‰#FF0000ã€ç™½ãªã‚‰#FFFFFF。黄色ãªã‚‰#FFFF00ã£ã¦ãªæ„Ÿã˜ã€‚ **B:** HTMLã®è‰²æŒ‡å®šã¯ã¼ãã§ã‚‚知ã£ã¦ã¾ã™ã€‚ **A:** ã§ã€ã©ã‚“ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’書ãã‹ãªã‚“ã ã‘ã©ã€ã“ã“ã§ã¯å˜ã«ç¾åœ¨ã®ãƒ•レーム番å·ã‚’書ã込んã§ã„る。最åˆã®å¼•æ•°ã¯ä½ç½®ã‚’示ã™ã‚¿ãƒ—ルã€ç¶šãå¼•æ•°ã¯æ›¸ã込む文å—列。 **B:** ãªã‚“ã‹ãƒ•レーム番å·ã°ã‹ã‚Šã§é£½ãã¦ãã¾ã—ãŸã。 **A:** ã‚€ã£ã€‚動作確èªã ã‹ã‚‰ã“れã§ã„ã„ã‚“ã よ。ã•ã¦ã€å‹•ã‹ã—ã¦ã¿ã‚‹ãžã€‚ .. figure:: img/17-3-03.jpg **B:** ãŠãŠã€å—ãŒå¤§ããã¦èªã¿ã‚„ã™ããªã£ãŸã€‚å³ä¸‹ã®å—ã¯å°ã•ã„ã‘ã©ã€‚ **A:** ImageDraw.Draw.textã§æ–‡å—ã®å¤§ãã•を指定ã™ã‚‹ã®ã¯ImageFontã£ã¦ã„ã†ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’使ã‚ãªã„ã¨ã„ã‘ãªãã¦ã¡ã‚‡ã£ã¨åބ介ãªã‚“ã よ。今回ã¯Python2.7ã§å®Ÿè¡Œã—ã¦ã„ã‚‹ã‚ã‘ã ãŒã€Python2.7ã«å¯¾å¿œã—ã¦ã„ã‚‹PIL1.1.7ã®ãƒã‚¤ãƒŠãƒªé…布版ãŒImageFontã«å¯¾å¿œã—ã¦ã„ãªã„ã‚“ã 。ã¾ã‚勘å¼ã—ã¦ãれ。 **B:** ã„ã‚ã„ã‚é¢å€’ã§ã™ããˆã€‚ **A:** ã¡ã‚‡ã£ã¨æ°—ã«ãªã‚‹ã®ã¯å³ä¸‹ã¨ãれ以外ã®ç”»é¢ã§9フレームもãšã‚Œã¦ã„ã‚‹ã¨ã“ã‚。ç†ç”±ãŒã‚ˆãã‚ã‹ã‚‰ãªã„。ã•ã£ãも言ã£ãŸã‘ã©ä»Šã¯ã“ã®å•題ã«è¸ã¿è¾¼ã‚€æ°—力も機æã‚‚ãªã„ã®ã§ã€Œé¢ç™½ã„ãªã‚ã€ã§æ¸ˆã¾ã›ã¦ãŠã。 **B:** 「é¢ç™½ã„ãªã‚ã€ã£ã¦ã€å®Ÿé¨“ã«ä½¿ã†äººã¯é¢ç™½ã„ã©ã“ã‚ã˜ã‚ƒãªã„ã§ã—ã‚‡ï¼ **A:** ã¾ã€è¤‡æ•°å°ã®webカメラã®å†…1å°ã¯ãƒ‡ã‚£ã‚¹ãƒ—レイãã®ã‚‚ã®ã«å‘ã‘ã¦ãŠãã‚“ã ã。3å°ã®ã‚«ãƒ¡ãƒ©ç”»é¢ã¯ã»ã¼åŒæœŸã—ã¦ã„ã‚‹ã®ã§ã€ãれã§åˆºæ¿€ã¨å‚åŠ è€…ã®è¡Œå‹•ã®å¯¾å¿œã‚’ã¨ã‚Œã°å分ã ã‚ã†ã€‚ **B:** ã†ãƒ¼ã‚“。ã™ã£ãりã—ãªã„。 **A:** 最後ã«ã‚‚ã†ä¸€ã¤éŠã³ã‚’。今度ã¯å‹•ç”»ã®fpsを下ã’ã¦ã€ãã®åˆ†è§£åƒåº¦ã‚’上ã’ã¦ã¿ã‚‹ã€‚ + 行番å·ãªã—ã®ã‚½ãƒ¼ã‚¹ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰â†’ `17-7.py <source/17-7.py>`_ .. literalinclude:: source/17-7.py :language: python :encoding: shift-jis :linenos: :lineno-match: **A:** 主ãªå¤‰æ›´ç‚¹ã¯ã¾ãš14ã‹ã‚‰17行目。å‰å›žã¯ã‚«ãƒ¡ãƒ©ã®è§£åƒåº¦ï¼å‹•ç”»ã®è§£åƒåº¦ã‚’縦横ãれãžã‚Œ1/2ã ã£ãŸãŒã€ä»Šå›žã¯ã‚«ãƒ¡ãƒ©ã‚’640x480ã€å‹•画を1024x768ã«ã—ã¦ã„る。ã“ã®å¤‰æ›´ã«å¯¾å¿œã•ã›ã‚‹ãŸã‚ã«ã‚ã¡ã“ã¡ã„ã˜ã£ã¦ã„ã‚‹ãŒãれã¯çœç•¥ã€‚本当ã¯å‹•ç”»ã®è§£åƒåº¦ã‚’1280x960ã«ã—ãŸã‹ã£ãŸã‚“ã ãŒã€ãã®è¾ºã¯å¾Œã§ã€‚ **B:** ã©ã†ã›ã†ã¾ãã„ã‹ãªã‹ã£ãŸã‚“ã§ã—ょ。 **A:** 後ã§ã£ã¦è¨€ã£ã¦ã‚“ã ã‚。32行目ã€ffmpegã«ä¸Žãˆã‚‹ã‚ªãƒ—ションã§ãƒ•レームレートを指定ã™ã‚‹ã‚ªãƒ—ション-rã«10を指定ã€10fpsã®å‹•画を作る。17-5.pyã¾ã§ä½¿ã£ã¦ã„ãŸMPEG1ã§ã¯10fpsを指定ã§ããªã„ã®ã§H.264ã«åˆ‡ã‚Šæ›¿ãˆãŸã¨ã„ã†ã‚ã‘ã 。 **B:** ãªã‚‹ã»ã©ã€‚ **A:** 10fpsã§ã®æ›¸ãè¾¼ã¿ã«å¯¾å¿œã™ã‚‹ãŸã‚ã«ã€84行目ã®ifã¯ã€Œ6ã§å‰²ã£ãŸä½™ã‚ŠãŒ0ã€ã¨ã„ã†æ¡ä»¶ã«å¤‰æ›´ã•れã¦ã„る。ã“れã§6フレームã«1回ã€ã™ãªã‚ã¡60フレームã«10å›žã®æ›¸ãè¾¼ã¿ã€‚フレームã¯60fpsãªã‚“ã ã‹ã‚‰æ›¸ãè¾¼ã¿ã¯10fps。 **B:** ãµã‚€ãµã‚€ã€‚ **A:** ã‚ã¨ã¯ç‰¹ã«æ„味ã¯ãªã„ã‘ã©ã‚°ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚’ç”»é¢ã«è¡¨ç¤ºã—ã¦ã¿ãŸã€‚ãれã§ã€60フレームã«1回乱数ã§ã‚°ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã®é‹å‹•æ–¹å‘を決定ã—ã¦ã€é‹å‹•æ–¹å‘ã‚’æ–‡å—列ã¨ã—ã¦å‹•ç”»ã«å‡ºåŠ›ã—ã¦ã„る。ã¾ã‚éŠã³ã ãªã€‚グレーティング㯠:doc:`例題16-1 <16-1>` ã‚’å‚考ã®ã“ã¨ã€‚後ã¯ã»ã¼17-6.pyã¨åŒã˜ã€‚以上ã€è§£èª¬çµ‚ã‚り。 **B:** ã˜ã‚ƒã‚å‹•ã‹ã—ã¦ã¿ã¾ã™ã‚ˆãƒ¼ã€‚ .. figure:: img/17-3-04.jpg **A:** 本æ¥ã¯1024x768ã®ã‚µã‚¤ã‚ºãªã‚“ã§ã™ãŒã“ã®ã‚µã‚¤ãƒˆã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã ã¨ã¯ã¿å‡ºã‚‹ã®ã§ç¸®å°ã—ã¾ã—ãŸã€‚縮å°ã™ã‚‹ã¨å³ä¸‹ã®æ–‡å—ãŒèªã‚ãªããªã£ã¡ã‚ƒã£ãŸã®ã§åŽŸå¯¸å¤§ã¾ã§æ‹¡å¤§ã—ãŸã‚‚ã®ã‚’èµ¤æž ã®ä¸ã«ç¤ºã—ã¦ã‚りã¾ã™ã€‚ **B:** ãŠãŠã€left/rightã£ã¦åˆ‡ã‚Šæ›¿ã‚ã‚‹ã®ãŒé¢ç™½ã„ã§ã™ã。冷é™ã«è€ƒãˆãŸã‚‰ç‰¹ã«é¢ç™½ãã‚‚ãªã„ã‚“ã ã‘ã©ã€ãšã£ã¨ãŸã æ•°å—ã ã‘ã ã£ãŸã‹ã‚‰é¢ç™½ã感ã˜ã¦ã—ã¾ã„ã¾ã™ã€‚ **A:** ã‚‚ã†ã¡ã‚‡ã£ã¨å„ªã—ã„è¨€ã„æ–¹ã¯ãªã„ã®ã‹ã€‚ **B:** ãˆãƒ¼ã€‚Aã•ã‚“ã¸ã®æ„›æƒ…ãŒã‚ãµã‚Œã¦ã‚‹ã¨æ€ã„ã¾ã›ã‚“ã‹ï¼Ÿ **A:** æ„›ããˆã€‚æ„›ãŒã‚ã‚‹ãªã‚‰ã¨ã‚Šã‚ãˆãšé£Ÿã„物を買ã£ã¦ãã¦ã»ã—ã„ãªã€‚ã•ã™ãŒã«ç©ºè…¹ã§ã—ゃã¹ã‚‹æ°—力ã¾ã§ãªããªã£ã¦ããŸã€‚ **B:** ã‚ã€ãã†ã„ãˆã°Aã•ん昨日ã‹ã‚‰ãšã£ã¨é£Ÿã¹ã¦ãªã„ã‚“ã§ã—ãŸã£ã‘。ã˜ã‚ƒã‚何ã‹è²·ã£ã¦ãã¾ã—ょã†ã€‚ **A:** …ãã®æ‰‹ã¯ï¼Ÿ **B:** ãŠé§„賃ã¯ï¼Ÿ **A:** …。ã“ã‚“ã ã‘æ¸¡ã—ã¦ãŠãã‹ã‚‰ã€å¦ç”Ÿå®¤ã®ãŠã‚„ã¤ã‚‚一緒ã«è²·ã£ã¦ãã‚‹ã“ã¨ã€‚ãŠã¤ã‚Šã¯ãŠã‚„ã¤å‹Ÿé‡‘ç®±ã¸å…¥ã‚Œã¦ãŠãã“ã¨ï¼ **B:** ã¸ãƒ¼ã„。何ã§ã‚‚ã„ã„ã§ã™ã‹ã‚? **A:** ãªã‚“ã ã‹æ¿€ã—ã糖分ãŒè¶³ã‚Šãªã„感ã˜ãªã‚“ã§ã€ç”˜ã„物買ã£ã¦ãã¦ãれ。 **B:** 了解~。(ガラガラ ピシャッ) **A:** ãµã†ã€‚ã•ã™ãŒã«ç–²ã‚ŒãŸãªã€‚ãˆãˆã¨ã€èªè€…ã®çš†æ§˜ã€‚今回ã¯ç‰¹ã«ä¸é€”åŠç«¯ãªå†…容ã§ã™ã‘ã©ã€ãれã»ã©æ™‚é–“çš„ãªæ£ç¢ºã•ã‚’å¿…è¦ã¨ã—ãªã„ã®ã§ã‚れã°ã“ã®webカメラ複数å°åŒæ™‚記録ã£ã¦ã®ã¯ãã“ãã“使ãˆã‚‹ã®ã§ã¯ãªã„ã‹ã¨æ€ã„ã¾ã™ã€‚Core i7 920ã®ãƒžã‚·ãƒ³ã§17-7.pyを実行ã™ã‚‹ã¨ã¡ã‚‡ã£ã¨å‡¦ç†è½ã¡ãŒç”Ÿã˜ã‚‹ã®ã§ã€ã‹ãªã‚Šã®ãƒã‚¤ã‚¹ãƒšãƒƒã‚¯æ©Ÿã˜ã‚ƒãªã„ã¨è§£åƒåº¦ã®é«˜ã„å‹•ç”»ã®ä¿å˜ã¯é›£ã—ã„ã¨æ€ã‚れã¾ã™ã€‚640x480ã‹800x600程度ã®å‹•ç”»ã«ã—ã¦ã€USBホストコントãƒãƒ¼ãƒ©ãƒ¼ã®å•é¡Œã«æ°—を付ã‘れã°ã€4å°åŒæ™‚ãらã„ã¯ã„ã‘ã‚‹ã‚“ã˜ã‚ƒãªã„ã§ã—ょã†ã‹ã€‚ãŠå½¹ã«ãŸã¦ã°å¹¸ã„ã§ã™ã€‚ãれã§ã¯ã€ä»Šå›žã¯ã“れã«ã¦ã€‚ 補足 ~~~~ 17-5.pyã‚„17-6.pyを実行ä¸ã®PCç”»é¢ã‚’ä¸Šã«æŽ²è¼‰ã—ãŸå†™çœŸã®ã‚ˆã†ã«è¤‡æ•°å°ã®webã‚«ãƒ¡ãƒ©ã§æ’®å½±ã™ã‚‹ã¨ã€å‹•ç”»ã®åŒã˜ãƒ•レームã«åˆæˆã•れãŸã‚«ãƒ¡ãƒ©ã®ç”»åƒã«ç•°ãªã‚‹ãƒ•レーム番å·ãŒå†™ã£ã¦ã„ã‚‹å ´åˆãŒã‚りã¾ã™ã€‚ã“れã¯ä»•æ–¹ã®ãªã„ã“ã¨ãªã®ã§ã™ãŒã€ãªãœä»•æ–¹ãŒãªã„ã®ã‹ç›´è¦³çš„ã«ã‚ã‹ã‚Šã‚„ã™ã„よã†ã«è£œè¶³ã—ã¦ãŠãã¾ã™ã€‚ 例ãˆã°30fpsã®ã‚«ãƒ¡ãƒ©ã§ã‚れã°ã€1000ms/30frame=33.3msã«ä¸€å›žæ’®å½±ã‚’行ã„ã¾ã™ã€‚ã„ã¤æ’®å½±ã‚’行ã†ã‹ã¯å€‹ã€…ã®ã‚«ãƒ¡ãƒ©ãŒæ±ºå®šã—ã¦ã„ã¦ã„ã‚‹ã®ã§ã€ä¸‹å›³ã®ã‚«ãƒ¡ãƒ©1ã€ã‚«ãƒ¡ãƒ©2ã®ã‚ˆã†ã«ã‚¿ã‚¤ãƒŸãƒ³ã‚°ãŒãšã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ã“ã®ã‚ˆã†ãªçŠ¶æ…‹ã«ãªã‚‹ã¨ã€ã‚«ãƒ¡ãƒ©1ã¨ã‚«ãƒ¡ãƒ©2ãŒæ’®å½±ã—ãŸç”»åƒã«å†™ã£ã¦ã„るフレーム番å·ãŒãšã‚Œã¦ã—ã¾ã„ã¾ã™ã€‚ã¾ãŸã€ã‚«ãƒ¡ãƒ©ãŒæ’®å½±ã‚’行ã†ã¨ãã«ã¯éžå¸¸ã«çŸã„時間センサーを露光ã—ã¾ã™ãŒã€ä¸‹å›³ã®ã‚«ãƒ¡ãƒ©3ã®ã‚ˆã†ã«ã“ã®æ™‚間帯ã«PCã®ç”»é¢æ›´æ–°ãŒé‡ãªã‚‹ã¨å‰å¾Œã®ãƒ•レームãŒé‡ãªã£ã¦ã¼ã‘ãŸç”»åƒã«ãªã£ã¦ã—ã¾ã„ã¾ã™ã€‚感度ãŒã‚ã¾ã‚Šé«˜ããªã„センサーを使ã£ã¦ã„るカメラã¯éœ²å…‰æ™‚é–“ãŒé•·ã„傾å‘ã«ã‚りã¾ã™ã—ã€æ’®å½±çжæ³ã«å¿œã˜ã¦éœ²å…‰æ™‚間を変化ã•ã›ã‚‹æ©Ÿèƒ½ãŒã‚る機種ã§ã¯æ’®å½±ä¸ã«éœ²å…‰æ™‚é–“ãŒå¤‰åŒ–ã—ã¦é€”ä¸ã‹ã‚‰ä¸‹å›³ã‚«ãƒ¡ãƒ©3ã®çŠ¶æ…‹ã«ãªã£ã¦ã—ã¾ã†ã“ã¨ã‚‚ã‚りã¾ã™ã€‚ .. figure:: img/17-3-05.png