View: 3442|Reply: 1

suggestion: make camera_opencv.py compatible with rpiOs Bullseye

[Copy link]

2

Threads

4

Posts

24

Credits

Newbie

Rank: 1

Credits
24
Post time 2022-7-8 15:32:36 | Show all posts |Read mode
Hi
I use a PiCar Adeept_AWR.
I created a Sd card with RPI_os bullseye
The camera is declared non-legacy and therefore the camera_opencv.py program is incompatible with this configuration and must be modified using the new picamera2 library.
1 - install picamera2
https://github.com/raspberrypi/picamera2
2 - check libcamera installation
in a terminal enter "libcamera-hello"
3 - edit camera_opencv.py
add in header (I have it, put under import cv2)
from picamera2 import Picamera2
4 - At the end of the file modify the Camera class method
     @staticmethod
     def frames():


  1.     @staticmethod
  2.     def frames():
  3. #        camera = cv2.VideoCapture(Camera.video_source) #,cv2.CAP_V4L2)
  4.         camera = Picamera2(Camera.video_source)
  5.         camera.configure(camera.create_preview_configuration(main={"format": 'XRGB8888', "size": (640, 480)}))
  6.         camera.start()
  7. #        if not camera.isOpened():
  8. #            raise RuntimeError('Could not start camera.')

  9.         cvt = CVThread()
  10.         cvt.start()

  11.         while True:
  12.             # read current frame
  13. #            _, img = camera.read()
  14.             img = camera.capture_array()

  15.             if Camera.modeSelect == 'none':
  16.                 switch.switch(1,0)
  17.                 cvt.pause()
  18.             else:
  19.                 if cvt.CVThreading:
  20.                     pass
  21.                 else:
  22.                     cvt.mode(Camera.modeSelect, img)
  23.                     cvt.resume()
  24.                 try:
  25.                     img = cvt.elementDraw(img)
  26.                 except:
  27.                     pass
  28.             


  29.             # encode as a jpeg image and return it
  30.             yield cv2.imencode('.jpg', img)[1].tobytes()
Copy the Code
Reply

Use magic Report

0

Threads

2

Posts

6

Credits

Newbie

Rank: 1

Credits
6
Post time 3 day(s) ago | Show all posts
Have you tried integrating more advanced image processing functions in cvt.elementDraw(img), like object detection or face recognition? I'm curious if Picamera2 has any performance impact when running in parallel with complex image processing threads?
Reply

Use magic Report

You have to log in before you can reply Login | Sign Up

Points Rules