Multiple usb cameras video recording using opencv 4.1.1 on jetpack4.3

Hello,
I’ve recently upgraded TX2 to jetpack 4.3 from 4.2 and it came with installed opencv 4.1.1 version.
For my project, I’m using about 4-5 usb cameras with TX2.

I’m using python 3.6.9 with opencv 4.1.1

When I was on jetpack 4.2 I was able to get 5 cameras streaming locally with python code using opencv 3.

Now with current version, I’m able to get only 2 camera streaming at a time and that too only at max resolution of 480p i.e. cap.set(3, 1280) and cap.set(4, 720) is also not working.

I’ve tried recording videos with 3 cameras without showing the feed on screen but only 2 cameras did record the video and third file was empty.

I tried using gstreamer but that is so much complicated so i want to use opencv for video recording.

Need help regarding this.

Here’s the code I’m running.

#6 cameras streaming code

import cv2

video_capture_0 = cv2.VideoCapture(1) 
video_capture_1 = cv2.VideoCapture(2) 
video_capture_2 = cv2.VideoCapture(3) 
video_capture_3 = cv2.VideoCapture(4) 
video_capture_4 = cv2.VideoCapture(5) 
video_capture_5 = cv2.VideoCapture(6) 

#video_capture_0.set(3, 1280)
#video_capture_0.set(4, 720)

while True:
    ret0, frame0 = video_capture_0.read()
    ret1, frame1 = video_capture_1.read()
    ret2, frame2 = video_capture_2.read()
    ret3, frame3 = video_capture_3.read()
    ret4, frame4 = video_capture_4.read()
    ret5, frame5 = video_capture_5.read()

    if (ret0):

        cv2.imshow('cam 0', frame0)

    if (ret1):
 
        cv2.imshow('Cam 1', frame1)

    if (ret2):
 
        cv2.imshow('cam 2', frame2)

    if (ret3):

        cv2.imshow('Cam 3', frame3)

    if (ret4):
 
        cv2.imshow('Cam 4', frame4)

    if (ret5):
 
        cv2.imshow('Cam 5', frame5)


    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

video_capture_0.release()
video_capture_1.release()
video_capture_2.release()
video_capture_3.release()
video_capture_4.release()
video_capture_5.release()
cv2.destroyAllWindows()

Hi,
It probably is an issue in OpenCV4.1.1. Please rollback to 3.4.0 and give it a try

1 Purge 4.1.1

sudo sudo apt-get purge *libopencv*

2 Run the script
https://github.com/AastaNV/JEP/blob/276306e052aba5ff131d6e785960abbb187bacde/script/install_opencv3.4.0_TX2.sh

I’ve tried the above command but it doesn’t remove the 4.1.1 version

Hi,
We can see it be removed:

nvidia@nvidia-desktop:~$ python
Python 2.7.17 (default, Nov  7 2019, 10:07:09)
[GCC 7.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.1.1'
>>>
nvidia@nvidia-desktop:~$ sudo sudo apt-get purge *libopencv*
[sudo] password for nvidia:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libopencv3.2-java' for glob '*libopencv*'
Note, selecting 'libopencv-photo3.2' for glob '*libopencv*'
Note, selecting 'libopencv-core-dev' for glob '*libopencv*'
Note, selecting 'libopencv-photo4.0' for glob '*libopencv*'
Note, selecting 'libopencv-gpu-dev' for glob '*libopencv*'
Note, selecting 'libopencv-apps0d' for glob '*libopencv*'
Note, selecting 'libopencv' for glob '*libopencv*'
Note, selecting 'libopencv-video3.2' for glob '*libopencv*'
Note, selecting 'libopencv-calib3d-dev' for glob '*libopencv*'
Note, selecting 'libopencv-ml-dev' for glob '*libopencv*'
Note, selecting 'libopencv-video4.0' for glob '*libopencv*'
Note, selecting 'libopencv-imgcodecs3.2' for glob '*libopencv*'
Note, selecting 'libopencv-shape-dev' for glob '*libopencv*'
Note, selecting 'libopencv-imgcodecs4.0' for glob '*libopencv*'
Note, selecting 'libopencv-imgcodecs-dev' for glob '*libopencv*'
Note, selecting 'libopencv-apps-dev' for glob '*libopencv*'
Note, selecting 'libopencv-highgui3.2' for glob '*libopencv*'
Note, selecting 'libopencv-calib3d3.2' for glob '*libopencv*'
Note, selecting 'libopencv-highgui4.0' for glob '*libopencv*'
Note, selecting 'libopencv-ml3.2' for glob '*libopencv*'
Note, selecting 'libopencv-imgproc3.2' for glob '*libopencv*'
Note, selecting 'libopencv-videoio-dev' for glob '*libopencv*'
Note, selecting 'libopencv-shape3.2' for glob '*libopencv*'
Note, selecting 'libopencv-calib3d4.0' for glob '*libopencv*'
Note, selecting 'libopencv-ml4.0' for glob '*libopencv*'
Note, selecting 'libopencv-imgproc4.0' for glob '*libopencv*'
Note, selecting 'libopencv-objdetect3.2' for glob '*libopencv*'
Note, selecting 'libopencv-objdetect4.0' for glob '*libopencv*'
Note, selecting 'libopencv-samples' for glob '*libopencv*'
Note, selecting 'libopencv-stitching-dev' for glob '*libopencv*'
Note, selecting 'libopencv2.4-java' for glob '*libopencv*'
Note, selecting 'libopencv-features2d-dev' for glob '*libopencv*'
Note, selecting 'libopencv-superres-dev' for glob '*libopencv*'
Note, selecting 'libopencv-features2d3.2' for glob '*libopencv*'
Note, selecting 'libopencv-features2d4.0' for glob '*libopencv*'
Note, selecting 'libopencv-stitching3.2' for glob '*libopencv*'
Note, selecting 'libopencv-flann-dev' for glob '*libopencv*'
Note, selecting 'libopencv-viz3.2' for glob '*libopencv*'
Note, selecting 'libopencv-stitching4.0' for glob '*libopencv*'
Note, selecting 'libopencv-viz-dev' for glob '*libopencv*'
Note, selecting 'libopencv-flann3.2' for glob '*libopencv*'
Note, selecting 'libopencv3.2-jni' for glob '*libopencv*'
Note, selecting 'libopencv-imgproc-dev' for glob '*libopencv*'
Note, selecting 'libopencv-contrib-dev' for glob '*libopencv*'
Note, selecting 'libopencv-flann4.0' for glob '*libopencv*'
Note, selecting 'libopencv-ts4.0' for glob '*libopencv*'
Note, selecting 'libopencv-videostab3.2' for glob '*libopencv*'
Note, selecting 'libopencv-python' for glob '*libopencv*'
Note, selecting 'libopencv-contrib3.2' for glob '*libopencv*'
Note, selecting 'libopencv-photo-dev' for glob '*libopencv*'
Note, selecting 'libopencv-superres3.2' for glob '*libopencv*'
Note, selecting 'libopencv-objdetect-dev' for glob '*libopencv*'
Note, selecting 'libopencv-core3.2' for glob '*libopencv*'
Note, selecting 'libopencv-videostab-dev' for glob '*libopencv*'
Note, selecting 'libopencv-dev' for glob '*libopencv*'
Note, selecting 'libopencv-doc' for glob '*libopencv*'
Note, selecting 'libopencv-core4.0' for glob '*libopencv*'
Note, selecting 'libopencv-ts-dev' for glob '*libopencv*'
Note, selecting 'libopencv-video-dev' for glob '*libopencv*'
Note, selecting 'libopencv-videoio3.2' for glob '*libopencv*'
Note, selecting 'libopencv-highgui-dev' for glob '*libopencv*'
Note, selecting 'libopencv-videoio4.0' for glob '*libopencv*'
Package 'libopencv-gpu-dev' is not installed, so not removed
Package 'libopencv2.4-java' is not installed, so not removed
Package 'libopencv-doc' is not installed, so not removed
Note, selecting 'libopencv' instead of 'libopencv-calib3d4.0'
Note, selecting 'libopencv' instead of 'libopencv-core4.0'
Note, selecting 'libopencv' instead of 'libopencv-features2d4.0'
Note, selecting 'libopencv' instead of 'libopencv-flann4.0'
Note, selecting 'libopencv' instead of 'libopencv-highgui4.0'
Note, selecting 'libopencv' instead of 'libopencv-imgcodecs4.0'
Note, selecting 'libopencv' instead of 'libopencv-imgproc4.0'
Note, selecting 'libopencv' instead of 'libopencv-ml4.0'
Note, selecting 'libopencv' instead of 'libopencv-objdetect4.0'
Note, selecting 'libopencv' instead of 'libopencv-photo4.0'
Note, selecting 'libopencv' instead of 'libopencv-stitching4.0'
Note, selecting 'libopencv' instead of 'libopencv-ts4.0'
Note, selecting 'libopencv' instead of 'libopencv-video4.0'
Note, selecting 'libopencv' instead of 'libopencv-videoio4.0'
Package 'libopencv-apps-dev' is not installed, so not removed
Package 'libopencv-apps0d' is not installed, so not removed
Package 'libopencv-calib3d-dev' is not installed, so not removed
Package 'libopencv-calib3d3.2' is not installed, so not removed
Package 'libopencv-contrib-dev' is not installed, so not removed
Package 'libopencv-contrib3.2' is not installed, so not removed
Package 'libopencv-core-dev' is not installed, so not removed
Package 'libopencv-core3.2' is not installed, so not removed
Package 'libopencv-features2d-dev' is not installed, so not removed
Package 'libopencv-features2d3.2' is not installed, so not removed
Package 'libopencv-flann-dev' is not installed, so not removed
Package 'libopencv-flann3.2' is not installed, so not removed
Package 'libopencv-highgui-dev' is not installed, so not removed
Package 'libopencv-highgui3.2' is not installed, so not removed
Package 'libopencv-imgcodecs-dev' is not installed, so not removed
Package 'libopencv-imgcodecs3.2' is not installed, so not removed
Package 'libopencv-imgproc-dev' is not installed, so not removed
Package 'libopencv-imgproc3.2' is not installed, so not removed
Package 'libopencv-ml-dev' is not installed, so not removed
Package 'libopencv-ml3.2' is not installed, so not removed
Package 'libopencv-objdetect-dev' is not installed, so not removed
Package 'libopencv-objdetect3.2' is not installed, so not removed
Package 'libopencv-photo-dev' is not installed, so not removed
Package 'libopencv-photo3.2' is not installed, so not removed
Package 'libopencv-shape-dev' is not installed, so not removed
Package 'libopencv-shape3.2' is not installed, so not removed
Package 'libopencv-stitching-dev' is not installed, so not removed
Package 'libopencv-stitching3.2' is not installed, so not removed
Package 'libopencv-superres-dev' is not installed, so not removed
Package 'libopencv-superres3.2' is not installed, so not removed
Package 'libopencv-ts-dev' is not installed, so not removed
Package 'libopencv-video-dev' is not installed, so not removed
Package 'libopencv-video3.2' is not installed, so not removed
Package 'libopencv-videoio-dev' is not installed, so not removed
Package 'libopencv-videoio3.2' is not installed, so not removed
Package 'libopencv-videostab-dev' is not installed, so not removed
Package 'libopencv-videostab3.2' is not installed, so not removed
Package 'libopencv-viz-dev' is not installed, so not removed
Package 'libopencv-viz3.2' is not installed, so not removed
Package 'libopencv3.2-java' is not installed, so not removed
Package 'libopencv3.2-jni' is not installed, so not removed
The following packages were automatically installed and are no longer required:
  apt-clone archdetect-deb bogl-bterm busybox-static cryptsetup-bin
  dpkg-repack gir1.2-timezonemap-1.0 gir1.2-xkl-1.0 grub-common
  kde-window-manager kinit kio kpackagetool5 kwayland-data kwin-common
  kwin-data kwin-x11 libdebian-installer4 libkdecorations2-5v5
  libkdecorations2private5v5 libkf5activities5 libkf5attica5
  libkf5completion-data libkf5completion5 libkf5declarative-data
  libkf5declarative5 libkf5doctools5 libkf5globalaccel-data libkf5globalaccel5
  libkf5globalaccelprivate5 libkf5idletime5 libkf5jobwidgets-data
  libkf5jobwidgets5 libkf5kcmutils-data libkf5kcmutils5 libkf5kiocore5
  libkf5kiontlm5 libkf5kiowidgets5 libkf5newstuff-data libkf5newstuff5
  libkf5newstuffcore5 libkf5package-data libkf5package5 libkf5plasma5
  libkf5quickaddons5 libkf5solid5 libkf5solid5-data libkf5sonnet5-data
  libkf5sonnetcore5 libkf5sonnetui5 libkf5textwidgets-data libkf5textwidgets5
  libkf5waylandclient5 libkf5waylandserver5 libkf5xmlgui-bin libkf5xmlgui-data
  libkf5xmlgui5 libkscreenlocker5 libkwin4-effect-builtins1 libkwineffects11
  libkwinglutils11 libkwinxrenderutils11 libqgsttools-p1 libqt5designer5
  libqt5help5 libqt5multimedia5 libqt5multimedia5-plugins
  libqt5multimediaquick-p5 libqt5multimediawidgets5 libqt5opengl5
  libqt5positioning5 libqt5printsupport5 libqt5qml5 libqt5quick5
  libqt5quickwidgets5 libqt5sensors5 libqt5sql5 libqt5test5 libqt5webchannel5
  libqt5webkit5 libxcb-composite0 libxcb-cursor0 libxcb-damage0 os-prober
  python3-dbus.mainloop.pyqt5 python3-icu python3-pam python3-pyqt5
  python3-pyqt5.qtsvg python3-pyqt5.qtwebkit python3-sip
  qml-module-org-kde-kquickcontrolsaddons qml-module-qtmultimedia
  qml-module-qtquick2 rdate tasksel tasksel-data
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  libopencv* libopencv-dev* libopencv-python* libopencv-samples*
  opencv-licenses* vpi-samples*
0 upgraded, 0 newly installed, 6 to remove and 279 not upgraded.
After this operation, 75.3 MB disk space will be freed.
Do you want to continue? [Y/n]
(Reading database ... 138852 files and directories currently installed.)
Removing vpi-samples (0.1.0) ...
Removing libopencv-dev (4.1.1-2-gd5a58aa75) ...
Removing opencv-licenses (4.1.1-2-gd5a58aa75) ...
Removing libopencv-python (4.1.1-2-gd5a58aa75) ...
Removing libopencv-samples (4.1.1-2-gd5a58aa75) ...
Removing libopencv (4.1.1-2-gd5a58aa75) ...
nvidia@nvidia-desktop:~$ python
Python 2.7.17 (default, Nov  7 2019, 10:07:09)
[GCC 7.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named cv2
>>>

I did directly remove the directory of cv2 from its source i.e.

sudo rm -r /usr/local/lib/python3.6/dist-packages/cv2

and it did work.
Now installing opencv 3.4.0

Thanks