Tensorflow USBCam hatası alıyorum


#1

Raspbian üzerinde nesne tanıma yapacağım ama taktığım USB kamera önce geliyor ve 10-15sn sonra kapanıyor. Sorun neyden kaynaklıdır?

pi@raspberrypi:~/tensorflow1/models/research/object_detection $ python3 Object_detection_picamera.py --usbcam/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: compiletime version 3.4 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.5
  return f(*args, **kwds)
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: builtins.type size changed, may indicate binary incompatibility. Expected 432, got 412
  return f(*args, **kwds)
select timeout
VIDIOC_DQBUF: Özkaynak geçici olarak kullanılamaz durumda
Traceback (most recent call last):
  File "Object_detection_picamera.py", line 192, in <module>
    feed_dict={image_tensor: frame_expanded})
  File "/home/pi/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 929, in run
    run_metadata_ptr)
  File "/home/pi/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1121, in _run
    np_val = np.asarray(subfeed_val, dtype=subfeed_dtype)
  File "/home/pi/.local/lib/python3.5/site-packages/numpy/core/numeric.py", line 538, in asarray
    return array(a, dtype, copy=False, order=order)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
pi@raspberrypi:~/tensorflow1/models/research/object_detection $

#2

Bu çok genel bir problemdir, raspicam mi kullanıyorsunuz yoksa USB web kamera mı? Sorun kamera ile alakalı yada sürücüler. Farklı sebepleri olabilir, mesela yüksek FPS veya yüksek çözünürlükte görüntü okumaya çalışmak. Kameranın bant genişliği dolduğu için cevap veremiyor veya kameranın güç beslemesi ile alakalı sorunlar var. Öncelikli olarak çözünürlüğü veya fps (hangisi yüksekse) bunu düşürün. Çözünürlüğü düşürürken frame’i okuyup resize etmek çözüm olmayacaktır, onun yerine opencv videocapture (veya ne kullanıyorsanız) parametreleri ile kameraya çözünürlük ve fps ataması yapın, veya farklı bir porttan farklı bir USB kamera ile deneyin belkide sorun gerçekten de kameradadır. Ayrıca V4LX (1 veya 2) ve USB loglarına bakın bir şeyler çıkabilir.

picamera için picam kullanıyorsan

with picamera.PiCamera() as camera:
   camera.resolution = (200, 200)
   camera.framerate = 5

opencv kullanıyorsan (USB veya picamera)

video_capture = cv2.VideoCapture(0)
video_capture.set(cv2.CAP_PROP_FRAME_WIDTH, 200)
video_capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 200)

Buradaki çözünürlük ve fps değerlerini düşürerek bant genişliği kullanımını azaltmayı deneyebilirsin.


#3

Dediklerinizi yaptım fakat yine aynı sorun oldu. Görüntü geldikten biraz sonra takılıyor ve son olarak görüntü kapanıyor. USBCam kullanıyorum. Port’unu ve çözünürlüğü de değiştirdim ama nafile. Bir de hata verdikten sonra aynı kodu girince bu sefer hiç açılmıyor. Sistemi yeniden başlatmak gerekiyor.

Edit: Yapınca oldu.

USB webcam

elif camera_type == ‘usb’:
# Initialize USB webcam feed
camera = cv2.VideoCapture(0)
ret = camera.set(3,200)
ret = camera.set(4,200)