Errors Caused By New Version Open CV Cv2.error: OpenCV(4.4.0)

Hi All,

I am trying to solve a challenge and understand the solutions that remedies this error? Thank you in advance for assisting me and responding to my questions!

I tried googling the solution via the error which proved futile thus far!
I tried troubleshooting the path to the data that did not work
Based on the error, it specifies that it cannot find the starting number for the data which all of the files are in the folder as it was downloaded!

I am uncertain of this error and it is driving me bonkers trying to solve this!

the error:
Couldn’t read video stream from file “UCF101/test”
[ERROR:0] global /private/var/folders/nz/vv4_9tw56nv9k3tkvyszvwg80000gn/T/pip-req-build-b4ibzwe2/opencv/modules/videoio/src/cap.cpp (142) open VIDEOIO(CV_IMAGES): raised OpenCV exception:

OpenCV(4.4.0) /private/var/folders/nz/vv4_9tw56nv9k3tkvyszvwg80000gn/T/pip-req-build-b4ibzwe2/opencv/modules/videoio/src/cap_images.cpp:253: error: (-5:Bad argument) CAP_IMAGES: can’t find starting number (in the name of file): UCF101/test in function ‘icvExtractPattern’

Traceback (most recent call last):
File “3dcnn.py”, line 180, in
main()
File “3dcnn.py”, line 121, in main
x, y = loaddata(args.videos, vid3d, args.nclass,
File “3dcnn.py”, line 79, in loaddata
X.append(vid3d.video3d(name, color=color, skip=skip))
File “/Users/mmgp/opt/Spyder Files2/3DCNN-master/videoto3d.py”, line 25, in video3d
frame = cv2.resize(frame, (self.height, self.width))
cv2.error: OpenCV(4.4.0) /private/var/folders/nz/vv4_9tw56nv9k3tkvyszvwg80000gn/T/pip-req-build-b4ibzwe2/opencv/modules/imgproc/src/resize.cpp:3929: error: (-215:Assertion failed) !ssize.empty() in function ‘resize’

40%|██████████████████

** My Code Is **

‘’’
import argparse
import os

import matplotlib
matplotlib.use(‘AGG’)
import matplotlib.pyplot as plt
import numpy as np
from keras.datasets import cifar10
from keras.layers import (Activation, Conv3D, Dense, Dropout, Flatten,
MaxPooling3D)
from keras.layers.advanced_activations import LeakyReLU
from keras.losses import categorical_crossentropy
from keras.models import Sequential
from keras.optimizers import Adam
from keras.utils import np_utils
from keras.utils.vis_utils import plot_model
from sklearn.model_selection import train_test_split

import videoto3d
from tqdm import tqdm

#Display Output Representations
def plot_history(history, result_dir):
plt.plot(history.history[‘acc’], marker=’.’)
plt.plot(history.history[‘val_acc’], marker=’.’)
plt.title(‘model accuracy’)
plt.xlabel(‘epoch’)
plt.ylabel(‘accuracy’)
plt.grid()
plt.legend([‘acc’, ‘val_acc’], loc=‘lower right’)
plt.savefig(os.path.join(result_dir, ‘model_accuracy.png’))
plt.close()

plt.plot(history.history['loss'], marker='.')
plt.plot(history.history['val_loss'], marker='.')
plt.title('model loss')
plt.xlabel('epoch')
plt.ylabel('loss')
plt.grid()
plt.legend(['loss', 'val_loss'], loc='upper right')
plt.savefig(os.path.join(result_dir, 'model_loss.png'))
plt.close()

def save_history(history, result_dir):
loss = history.history[‘loss’]
acc = history.history[‘acc’]
val_loss = history.history[‘val_loss’]
val_acc = history.history[‘val_acc’]
nb_epoch = len(acc)

with open(os.path.join(result_dir, 'result.txt'), 'w') as fp:
    fp.write('epoch\tloss\tacc\tval_loss\tval_acc\n')
    for i in range(nb_epoch):
        fp.write('{}\t{}\t{}\t{}\t{}\n'.format(
            i, loss[i], acc[i], val_loss[i], val_acc[i]))

#Loading Data Here
def loaddata(video_dir, vid3d, nclass, result_dir, color=False, skip=True):
files = os.listdir(video_dir)
X =
labels =
labellist =

pbar = tqdm(total=len(files))

for filename in files:
    pbar.update(1)
    if filename == '.DS_Store':
        continue
    name = os.path.join(video_dir, filename)
    label = vid3d.get_UCF_classname(filename)
    if label not in labellist:
        if len(labellist) >= nclass:
            continue
        labellist.append(label)
    labels.append(label)
    X.append(vid3d.video3d(name, color=color, skip=skip))

pbar.close()
with open(os.path.join(result_dir, 'classes.txt'), 'w') as fp:
    for i in range(len(labellist)):
        fp.write('{}\n'.format(labellist[i]))

for num, label in enumerate(labellist):
    for i in range(len(labels)):
        if label == labels[i]:
            labels[i] = num
if color:
    return np.array(X).transpose((0, 2, 3, 4, 1)), labels
else:
    return np.array(X).transpose((0, 2, 3, 1)), labels

#initialise Options Parameters
def main():
parser = argparse.ArgumentParser(
description=‘simple 3D convolution for action recognition’)
parser.add_argument(’–batch’, type=int, default=128)
parser.add_argument(’–epoch’, type=int, default=100)
parser.add_argument(’–videos’, type=str, default=‘UCF101’,
help=‘directory where videos are stored’)
parser.add_argument(’–nclass’, type=int, default=101)
parser.add_argument(’–output’, type=str, required=True)
parser.add_argument(’–color’, type=bool, default=False)
parser.add_argument(’–skip’, type=bool, default=True)
parser.add_argument(’–depth’, type=int, default=10)
args = parser.parse_args()

img_rows, img_cols, frames = 32, 32, args.depth
channel = 3 if args.color else 1
fname_npz = 'dataset_{}_{}_{}.npz'.format(
    args.nclass, args.depth, args.skip)

vid3d = videoto3d.Videoto3D(img_rows, img_cols, frames)
nb_classes = args.nclass
if os.path.exists(fname_npz):
    loadeddata = np.load(fname_npz)
    X, Y = loadeddata["X"], loadeddata["Y"]
else:
    x, y = loaddata(args.videos, vid3d, args.nclass,
                    args.output, args.color, args.skip)
    X = x.reshape((x.shape[0], img_rows, img_cols, frames, channel))
    Y = np_utils.to_categorical(y, nb_classes)

    X = X.astype('float32')
    np.savez(fname_npz, X=X, Y=Y)
    print('Saved dataset to dataset.npz.')
print('X_shape:{}\nY_shape:{}'.format(X.shape, Y.shape))

# Define model
model = Sequential()
model.add(Conv3D(32, kernel_size=(3, 3, 3), input_shape=(
    X.shape[1:]), padding='valid'))
model.add(Activation('relu'))
model.add(Conv3D(32, kernel_size=(3, 3, 3), padding='valid'))
model.add(Activation('softmax'))
model.add(MaxPooling3D(pool_size=(3, 3, 3), padding='valid'))
model.add(Dropout(0.25))

model.add(Conv3D(64, kernel_size=(3, 3, 3), padding='valid'))
model.add(Activation('relu'))
model.add(Conv3D(64, kernel_size=(3, 3, 3), padding='valid'))
model.add(Activation('softmax'))
model.add(MaxPooling3D(pool_size=(3, 3, 3), padding='valid'))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(512, activation='sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(nb_classes, activation='softmax'))

model.compile(loss=categorical_crossentropy,
              optimizer=Adam(), metrics=['accuracy'])
model.summary()
plot_model(model, show_shapes=True,
           to_file=os.path.join(args.output, 'model.png'))

X_train, X_test, Y_train, Y_test = train_test_split(
    X, Y, test_size=0.80, random_state=43)

history = model.fit(X_train, Y_train, validation_data=(X_test, Y_test), batch_size=args.batch,
                    epochs=args.epoch, verbose=1, shuffle=True)
model.evaluate(X_test, Y_test, verbose=0)
model_json = model.to_json()
if not os.path.isdir(args.output):
    os.makedirs(args.output)
with open(os.path.join(args.output, 'ucf101_3dcnnmodel.json'), 'w') as json_file:
    json_file.write(model_json)
model.save_weights(os.path.join(args.output, 'ucf101_3dcnnmodel.hd5'))

loss, acc = model.evaluate(X_test, Y_test, verbose=0)
print('Test loss:', loss)
print('Test accuracy:', acc)
plot_history(history, args.output)
save_history(history, args.output)

if name == ‘main’:
main()
‘’’

Hi. You are posting on the PSF category, which has the title “This category is for the discussions relating to the Python Software Foundation”. You might get more helpful responses if you post in the Users category.

One strategy for solving problems like this is to cut your code down to the minimal viable reproducer: ten lines of code that demonstrate the problem.

Matti

This was solved, the packages caused the issues! if your error is similar, one suggestion is to upgrade your packages!