python上来自热像仪(ip camera)的流,连接错误

时间:2017-02-16 11:33:29

标签: python opencv ip-camera imaging

我想从热像仪流式传输,通常将其帧导出为灰度帧 热像仪是一台IP摄像机,我尝试了不同的代码和包,但没有输出。 当我改变代码一点点从USB摄像头查看它正常工作,所以任何帮助请。 这是我试过的代码:

import sys
sys.path.append('C:\Python27\Lib\site-packages')
import Tkinter as tk
import cv2
from PIL import Image, ImageTk
i=0

window = tk.Tk()
window.title('thermal image')
var = tk.IntVar()
width, height = 800, 600
cap = cv2.VideoCapture(0)
cap.open("http://169.254.110.119/")

left_label = tk.Label(window)
left_label.pack(side="left")
right_label = tk.Label(window)
right_label.pack(side="right")

def show_frame():
    _, frame = cap.read()
    print frame
    if frame != None:
        frame = cv2.flip(frame, 1)
        img = Image.fromarray(frame)
        imgtk = ImageTk.PhotoImage(image=img)
        left_label.imgtk = imgtk
        left_label.configure(image=imgtk)
        left_label.after(10, show_frame)

show_frame()
window.mainloop()

1 个答案:

答案 0 :(得分:0)

我认为代码中没有抓住来自网站的图像,对我有用的是

img_requested = requests.get(url)
img_arr = np.array(bytearray(img_requested.content), dtype=np.uint8)
frame = cv2.imdecode(img_arr, -1)

然后您将获得帧(彩色图片/视频)。请记住,您需要将请求和numpy导入为np。

重要的是,如果您使用IP网络摄像头,请不要忘记编写“ /shot.jpg” 在网址末尾,例如:“ http://190.160.0.0:8080/shot.jpg”,以便它有效地捕获图像。

相关问题