2012-11-10 63 views
3

我想在opencv中使用Android IP摄像头拍摄的照片(http://192.168.0.10:8080/shot.jpg),但它不起作用,我得到一个空白窗口。 我用另一张图片(http://images2.wikia.nocookie.net/_ cb20110420175105/agallas/es/images/thumb/1/11/Agallas-el-perro-cobarde-125(1).jpg /640px-Agallas-el-perro-cobarde-125_(1).jpg),它完美的工作。 为什么它不能用ip相机拍摄的照片?使用IP摄像头的OpenCv照片

import sys, cv 
    import numpy as np 
    #photo = "http://images2.wikia.nocookie.net/__cb20110420175105/agallas/es/images/thumb/1/11/Agallas-el-perro-cobarde-125_(1).jpg/640px-Agallas-el-perro-cobarde-125_(1).jpg" 
    photo = "http://192.168.0.10:8080/shot.jpg" 
    img=cv.CaptureFromFile(photo) 
    while True: 
    frame = cv.QueryFrame(img) 
    cv.ShowImage('Foto',frame) 
    if cv.WaitKey(30)==27: 
     break 

两个图片具有相同的尺寸

+0

是否与'cv2.imread'工作? –

+0

不,它不起作用 –

+0

我不认为IP摄像机在这里有什么区别。你能证实路径是绝对正确的吗?你可以用其他方式访问照片,比如你的互联网浏览器吗? – james

回答

2

这可能不是一个解决我的问题非常有效的方式,但它的作品。

import urllib 
import cv 

urllib.urlretrieve("http://192.168.0.10:8080/shot.jpg", "foto.jpg") 
imagen=cv.LoadImage('foto.jpg') 
cv.ShowImage('Image',imagen) 
2

下面是一些我所工作从运行Android IP摄像头,采用安德烈·迪亚兹的想法,并与opencv2蟒蛇我的手机流代码...

import cv2 
import urllib 

while True: 
    urllib.urlretrieve("http://192.168.0.10:8080/shot.jpg", "foto.jpg") 
    src_image = cv2.imread('foto.jpg', 0) 
    cv2.imshow('Viewer',src_image) 
    # read user keyboard for 5ms, and break on any keypress.  
    if (cv2.waitKey (5) != -1): 
     break;