I've just been following the Yeah-World tutorial and have done all the things it said, except I changed the code in record.py so it can use a standard USB webcam:
cap = cv2.VideoCapture(0)
frames = []
started = time()
while time() - started < seconds:
frame = cap.read()
frames.append(frame)
The only thing I changed was the loop where it records frame by frame, I removed the camera dependencies from everything because it pointed towards Picamera, because I don't have a Picamera currently. After that I tested record.py and it worked! When I tried to train a model based on the standard yeah, sitting, and random, I got the error from pinet.py:
2020-04-13 15:37:00.067761: E tensorflow/core/platform/hadoop/hadoop_file_system.cc:132] HadoopFileSystem load error: libhdfs.so: cannot open shared object file: No such file or directory
Loading tensorflow feature extractor...
WARNING:tensorflow:From /home/pi/ML-examples/yeah-world/pinet.py:28: The name tf.gfile.GFile is deprecated. Please use tf.io.gfile.GFile instead.
WARNING:tensorflow:From /home/pi/ML-examples/yeah-world/pinet.py:29: The name tf.GraphDef is deprecated. Please use tf.compat.v1.GraphDef instead.
WARNING:tensorflow:From /home/pi/ML-examples/yeah-world/pinet.py:37: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.
Loading example/yeahTraceback (most recent call last):
File "train.py", line 101, in
main()
File "train.py", line 55, in main
features = [feature_extractor.features(f) for f in x]
File "train.py", line 55, in
features = [feature_extractor.features(f) for f in x]
File "/home/pi/ML-examples/yeah-world/pinet.py", line 45, in features
preprocessed = ((np.array(image, dtype=np.float32) / 255.) - 0.5) * 2.
ValueError: setting an array element with a sequence.
I looked up the error and it said that it was trying to force an uneven multidimensional array into something? I don't know if it's messed up because my webcam may be giving it the wrong format of data, or if I don't have the right version of NumPy installed. Please forgive me if I did something wrong, this is my first time posting a question/issue
I have a Rasberry Pi 3B+ running Raspbian GNU/Linux 10 (buster)
The output of print(cap.read()):
Recording [ 10 frames, 0s left ](True, array([[[ 34, 38, 57],
[ 33, 36, 57],
[ 34, 34, 58],
...,
[ 42, 41, 73],
[ 40, 42, 73],
[ 41, 42, 76]],
[[ 31, 37, 56],
[ 31, 36, 57],
[ 32, 34, 58],
...,
[ 39, 41, 71],
[ 39, 43, 72],
[ 40, 43, 74]],
[[ 25, 38, 54],
[ 27, 37, 55],
[ 27, 36, 56],
...,
[ 35, 42, 67],
[ 34, 43, 70],
[ 36, 45, 72]],
...,
[[ 19, 10, 43],
[ 20, 12, 43],
[ 20, 13, 40],
...,
[208, 225, 234],
[201, 219, 230],
[196, 214, 225]],
[[ 21, 13, 50],
[ 21, 14, 49],
[ 23, 15, 46],
...,
[210, 225, 234],
[205, 222, 231],
[202, 219, 228]],
[[ 23, 15, 55],
[ 23, 15, 52],
[ 23, 16, 49],
...,
[210, 223, 231],
[207, 223, 230],
[206, 222, 229]]], dtype=uint8))
frame
?cap.read()
. Please add aprint(cap.read())
to your loop and tell us.