Intel® Distribution of OpenVINO™ Toolkit
Community assistance about the Intel® Distribution of OpenVINO™ toolkit, OpenCV, and all aspects of computer vision-related on Intel® platforms.
6492 Discussions

GStreamer: pipeline have not been created VIDIOC_REQBUFS: Inappropriate ioctl for device

es__we
Beginner
4,968 Views

I try to run the SSD-lite mobilenetv2 model on raspberry pi 3B+, however, some errors occur:

[ WARN:0] global /home/jenkins/workspace/OpenCV/OpenVINO/build/opencv/modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
VIDIOC_REQBUFS: Inappropriate ioctl for device

The test script is as follows:
 

import cv2
import numpy as np
from openvino.inference_engine import IENetwork, IECore

model_xml = "./frozen_inference_graph.xml"
model_bin = "./frozen_inference_graph.bin"

# Read labels
filename = './labels.txt'
with open(filename, 'r') as f:
    s = [i[:-1].split() for i in f.readlines()]

ie = IECore()
net = IENetwork(model=model_xml, weights=model_bin)
exec_net = ie.load_network(network=net, device_name="MYRIAD")

input_blob = next(iter(net.inputs))
output_blob = next(iter(net.outputs))
net.batch_size = 1
#print(net.outputs['DetectionOutput'].shape)

n, c, h, w = net.inputs[input_blob].shape
#print(n, c, h, w)

font = cv2.FONT_HERSHEY_DUPLEX
cap = cv2.VideoCapture("video.mp4")
ret, frame = cap.read()
while cap.isOpened():
    ret, frame = cap.read()
    in_frame = cv2.resize(frame, (w, h))
    in_frame = in_frame.transpose((2, 0, 1))  # Change data layout from HWC to CHW
    in_frame = in_frame.reshape((n, c, h, w))
    res = exec_net.infer(inputs={input_blob: in_frame})
    #print(res)
    out = res['DetectionOutput'][0][0]
    #print(out)
    

    # Draw detected faces on the frame.
    for detection in out:
        confidence = float(detection[2])
        xmin = int(detection[3] * frame.shape[1])
        ymin = int(detection[4] * frame.shape[0])
        xmax = int(detection[5] * frame.shape[1])
        ymax = int(detection[6] * frame.shape[0])
       
        if confidence > 0.7:
            cv2.rectangle(frame, (xmin, ymin), (xmax, ymax), color=(0, 255, 0))
            print("index:", int(detection[1])-1)
            cv2.putText(frame, (s[int(detection[1])-1])[1], (xmin+3, ymin-3), font, 1, (0, 0, 0), 1,)
    # Save the frame to an image file.

    cv2.imshow('out.jpg', frame)
    key = cv2.waitKey(1)
    if key == 27:
        break

cv2.destroyAllWindows()

It seems that I can't open the video.mp4 with the opencv in openvino, how can I solve this problem?

0 Kudos
3 Replies
JesusE_Intel
Moderator
4,968 Views

Hi es, we,

I believe this may be related to a known issue with the GStreamer backend not handling relative paths. The issue has been fixed and will be implemented on the next software release. Meanwhile, you can use the absolute file path as a workaround.

Please let me know if this works for you. 

#Change this line:
cap = cv2.VideoCapture("video.mp4")

#to
cap = cv2.VideoCapture("/home/pi/<PATH>/video.mp4")

Regards,

Jesus

0 Kudos
es__we
Beginner
4,968 Views

Jesus E. (Intel) wrote:

Hi es, we,

I believe this may be related to a known issue with the GStreamer backend not handling relative paths. The issue has been fixed and will be implemented on the next software release. Meanwhile, you can use the absolute file path as a workaround.

Please let me know if this works for you. 

#Change this line:
cap = cv2.VideoCapture("video.mp4")

#to
cap = cv2.VideoCapture("/home/pi/<PATH>/video.mp4")

Regards,

Jesus

Thanks, it works!

0 Kudos
JesusE_Intel
Moderator
4,968 Views

Hi es,we,

Great, I am glad it worked for you! This should be fixed in the next software release.

Regards,

Jesus

0 Kudos
Reply