iT邦幫忙

0

請問此python程式碼哪裡出問題了

import cv2
from urllib.request import urlopen
import numpy as np
stream = urlopen('http://localhost:8080/?action=stream')
#此處localhost我執行時有改成自己的IP
bytes = ''
while True:
    bytes += stream.read(1024)
    #此處都會有ERROR,TypeError,改成str(stream.read(1024))才不會ERROR
    #但我總覺得不能這樣改
    a = bytes.rfind('\xff\xd8')
    b = bytes.rfind('\xff\xd9')
    if a != -1 and b != -1:
        #此處a以及b一直都是-1
        jpg = bytes[a:b+2]
        bytes = bytes[b+2:]
        i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8),cv2.IMREAD_COLOR)
        #error: (-215:Assertion failed) !buf.empty() in function 'imdecode_'
        cv2.imshow('i', i)
        if cv2.waitKey(1) == 27:
            exit(0)

這是我在網路上找的python程式碼,要從mjpg-streamer取得畫面並用opencv做後續處理,但是用python3執行後,都會出現這些問題,請問是哪裡出問題了呢?

1 個回答

1
黃彥儒
iT邦高手 1 級 ‧ 2021-08-18 17:32:36
最佳解答

你的bytes = ''是字串阿……怎可以跟bytes加在一起?

vuj8104 iT邦新手 5 級 ‧ 2021-08-19 09:09:22 檢舉

可是我不加這行,後面的“bytes += stream.read(1024)”改成“bytes = stream.read(1024)”也是有錯誤

vuj8104 iT邦新手 5 級 ‧ 2021-08-19 11:39:39 檢舉

最後問題有解決了,謝謝您的回答,感恩

我要發表回答

立即登入回答