Python kameradan mjpeg frame alma


#1

Merhabalar ,
Ben ip kamera üzerinden mjpeg url olarak frame alacağım.
Fakat kodumda bir müddet sonra hataya düşüyor ve çözüme ulaşamadım.
Python 3.7 ve ide olarak spyder kullanıyorum.
Yardımlarınızı bekliyorum Teşekkürler
Örnek kodum:

r = requests.get('url', auth=HTTPDigestAuth('usernam', 'pass'), stream=True)               
if(r.status_code == 200):
   bytes=b'' 
   for chunk in r.iter_content(chunk_size=1024):
    bytes += chunk
    finda = bytes.find(b'\xff\xd8')
    findb = bytes.find(b'\xff\xd9')
    if finda != -1 and findb != -1:
      jpg = bytes[finda:findb+2]
      bytes = bytes[findb+2:]
      frame = cv2.imdecode(np.frombuffer(jpg, dtype=np.uint8), cv2.IMREAD_COLOR)
      if frame is not None:
         cv2.imshow('Live',frame)
         if cv2.waitKey(1) == 27:
           exit(0)

hata ise şu şekilde
frame = cv2.imdecode(np.asarray(bytearray(jpg), dtype=np.uint8), cv2.IMREAD_COLOR) this line error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:726: error: (-215:Assertion failed) !buf.empty() && buf.isContinuous() in function ‘cv::imdecode_’ What should I do? i will be waiting for your reply


#2

hata

" !buf.empty() && buf.isContinuous()"

kısmından gelmiş
Bir süre çalışıp hata veriyor dediğinize göre ,bufferın boş gelmediğine emin olun


#4

Bağlantı bir şekilde kopuyor demekki
yada kamera yetiştiremiyorda olabilir belki - bekleme veriyormusun okumalar arasında ? -
exception kontrolü koy
program çalışmaya devam etsin belki bazı frameleri kaybedersin ama


#3

Teşekkür ederim dediğiniz gibi buffer boş gelip gelmediğini kontrol ettim
Fakat şimde de raise ChunkedEncodingError(e) hatası alıyorum bunun için nasıl bir yol izlemeliyim bağlantı statüsü 200 başarılı dönüyor bana ama bağlantının kopma nedeni ne olabilir.
ChunkedEncodingError: (“Connection broken: ConnectionResetError(10054, ‘Varolan bir bağlantı uzaktaki bir ana bilgisayar tarafından zorla kapatıldı’, None, 10054, None)”, ConnectionResetError(10054, ‘Varolan bir bağlantı uzaktaki bir ana bilgisayar tarafından zorla kapatıldı’, None, 10054, None))


#5

Dediğiniz gibi exception ve bekleme verdim fakat olmadı.Başka ne yapmalıyım.Ve benim bunu live stream gibi göstermem gerekiyor bundan dolayı da frame arası bekleme çok olmamalı diye düşünüyorum.


#6

olmadı ne demek ?
Kameranın bir fps değeri vardır ona göre bir bekleme vermek zorundasınız zaten


#7

Fps değeri kadar bekletme yapıyorum.Fakat şöyle bir durum ortaya çıkıyor ben çözünürlüğümü 1920x1080 olarak seçip frame rate olarakta 25fps verdiğimde pyhton da gösterdiğimde görüntü de gecikmeler oluyor fakat ben bu çözünürlükte frame rate 10 fps yaptığımda sıkıntı olmuyor bunu nasıl çözebilirim.Teşekkürler


#8

İlk problem çözüldüyse başlığı çözüldüğünü ve nasıl yaptığınızı yapıp kapatınız
diğer sorularınızı
Eğer gerekiyorsa bir başka başlık açarak sorunuz
yada ufak tefek şeylerse doğrudan iletişime geçip sorunuz


closed #9

Bu konu son cevaptan 60 dakika sonra otomatik olarak kapatıldı. Yeni cevap girilmesine izin verilmiyor.