Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 7:31 pm

gordon77 wrote:
Sun Nov 17, 2019 7:01 pm
Is the camera working? The error message could suggest there is nothing in img. This may also explain your earlier problem.

Did it print a size?

Did you save the reticle as Reticle2.jpg?

If you do ls /dev do you see Video0?
i see video0 but when the script runs it just pulls up a small window thats completely black also i ran it with both reticle2.jpg and my own and it came out with the same results

gordon77
Posts: 4292
Joined: Sun Aug 05, 2012 3:12 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 7:40 pm

Did you see a size printed?

You may to use IDLE3 to see the print output. You can install it, if you don't have it, with sudo apt-get install idle3.

Then run the script through IDLE3.

gordon77
Posts: 4292
Joined: Sun Aug 05, 2012 3:12 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 7:43 pm

what do you see if you run this?

Code: Select all

  #!/usr/bin/env python3
import cv2
import os
import time

# setup pi camera 
if os.path.exists('/dev/video0') == False:
  path = 'sudo modprobe bcm2835-v4l2'
  os.system (path)
  time.sleep(1)
path = 'v4l2-ctl --set-ctrl=auto_exposure=0'
os.system (path)
  
# start video
cam = cv2.VideoCapture(0)

# show video size
print (cam.get(3)  , cam.get(4))

# set video size
cam.set(3,640)
cam.set(4,480)

# setup window
winName = "Scope"
cv2.namedWindow(winName)

while True:
    # take video frame
    ok, img = cam.read()
    # show image
    cv2.imshow( winName,img)
    # wait
    key = cv2.waitKey(10)
    # press Esc to EXIT
    if key == 27:
       cv2.destroyWindow(winName)
       break  

gordon77
Posts: 4292
Joined: Sun Aug 05, 2012 3:12 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 7:46 pm

I have just spotted your earlier error message says img but it should be img2, so that means you are not loading the Reticle2.jpg. Note the capital R.

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 7:47 pm

gordon77 wrote:
Sun Nov 17, 2019 7:43 pm
what do you see if you run this?

Code: Select all

  #!/usr/bin/env python3
import cv2
import os
import time

# setup pi camera 
if os.path.exists('/dev/video0') == False:
  path = 'sudo modprobe bcm2835-v4l2'
  os.system (path)
  time.sleep(1)
path = 'v4l2-ctl --set-ctrl=auto_exposure=0'
os.system (path)
  
# start video
cam = cv2.VideoCapture(0)

# show video size
print (cam.get(3)  , cam.get(4))

# set video size
cam.set(3,640)
cam.set(4,480)

# setup window
winName = "Scope"
cv2.namedWindow(winName)

while True:
    # take video frame
    ok, img = cam.read()
    # show image
    cv2.imshow( winName,img)
    # wait
    key = cv2.waitKey(10)
    # press Esc to EXIT
    if key == 27:
       cv2.destroyWindow(winName)
       break  

k so this code displays the feed and i am running it in python 3 idle so i dont know if idl3 is a different program but ill try that install code

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 7:50 pm

gordon77 wrote:
Sun Nov 17, 2019 7:46 pm
I have just spotted your earlier error message says img but it should be img2, so that means you are not loading the Reticle2.jpg. Note the capital R.
i am using Reticle2.jpg it gives the same error regardless

gordon77
Posts: 4292
Joined: Sun Aug 05, 2012 3:12 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 7:51 pm

Is the jpg in /home/pi?

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 7:55 pm

gordon77 wrote:
Sun Nov 17, 2019 7:51 pm
Is the jpg in /home/pi?
its in the downloads

gordon77
Posts: 4292
Joined: Sun Aug 05, 2012 3:12 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 8:07 pm

Church Lenard wrote:
Sun Nov 17, 2019 7:55 pm
gordon77 wrote:
Sun Nov 17, 2019 7:51 pm
Is the jpg in /home/pi?
its in the downloads
Copy it to /home/pi or change the script to /home/pi/Documents/Reticle2.jpg


img2 = cv2.imread('/home/pi/Documents/Reticle2.jpg')

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 8:16 pm

gordon77 wrote:
Sun Nov 17, 2019 8:07 pm
Church Lenard wrote:
Sun Nov 17, 2019 7:55 pm
gordon77 wrote:
Sun Nov 17, 2019 7:51 pm
Is the jpg in /home/pi?
its in the downloads
Copy it to /home/pi or change the script to /home/pi/Documents/Reticle2.jpg


img2 = cv2.imread('/home/pi/Documents/Reticle2.jpg')
im a freaking idiot now it works

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 8:20 pm

ok so one last question how do you make it go fullscreen instead of windowed?

gordon77
Posts: 4292
Joined: Sun Aug 05, 2012 3:12 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 8:29 pm

Try changing it to

cv2.namedWindow(winName, cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty(winName, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Sun Nov 17, 2019 8:32 pm

gordon77 wrote:
Sun Nov 17, 2019 8:29 pm
Try changing it to

cv2.namedWindow(winName, cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty(winName, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
that kinda worked but its still got the same windowed size and the rest is white

edit: ok so after further inspection on this it displays nearly fullscreen its got a few pixels on the sides that are pure white and interfere slightly with the camera feed also the image has shrunk drastically is there a way to resize these to accommodate for the pixel loss?
Last edited by Church Lenard on Mon Nov 18, 2019 5:22 am, edited 1 time in total.

carcela
Posts: 7
Joined: Tue Apr 26, 2016 3:07 pm

Re: Image overlay on live video feed

Mon Nov 18, 2019 3:42 am

Hi,
You can use pi3d:
https://github.com/tipam/pi3d

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Mon Nov 18, 2019 5:20 am

carcela wrote:
Mon Nov 18, 2019 3:42 am
Hi,
You can use pi3d:
https://github.com/tipam/pi3d
pi 3d looks great and all but its really too much of a hassle to work in a 3d plane to switch back to a 2d plane when all i need to do now is scale up an image

gordon77
Posts: 4292
Joined: Sun Aug 05, 2012 3:12 pm

Re: Image overlay on live video feed

Mon Nov 18, 2019 10:28 am

Church Lenard wrote:
Sun Nov 17, 2019 8:32 pm
gordon77 wrote:
Sun Nov 17, 2019 8:29 pm
Try changing it to

cv2.namedWindow(winName, cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty(winName, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
that kinda worked but its still got the same windowed size and the rest is white

edit: ok so after further inspection on this it displays nearly fullscreen its got a few pixels on the sides that are pure white and interfere slightly with the camera feed also the image has shrunk drastically is there a way to resize these to accommodate for the pixel loss?
I don't know why this didn't work correctly, in fact it does sometimes on my PI4 !.

Here's a workaround which reads the resolution of the monitor, sets the camera to half that (i found the colours odd if I set it to the same as my monitor at 1920 x 1080), it then scales to fit.

Note the new reticle4.jpg (zipped).

Code: Select all

#!/usr/bin/env python3
import cv2
import os
import time
import tkinter as tk

# read screen resolution
root = tk.Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
print (screen_width , screen_height)

invert_mask = 0

# mouse action
def point(event, x, y, flags, param):
    global invert_mask
    if event == cv2.EVENT_LBUTTONDOWN:
        if invert_mask == 0:
            invert_mask = 1
        else:
            invert_mask = 0

# setup pi camera 
if os.path.exists('/dev/video0') == False:
  path = 'sudo modprobe bcm2835-v4l2'
  os.system (path)
  time.sleep(1)
path = 'v4l2-ctl --set-ctrl=auto_exposure=0'
os.system (path)
  
# start video
cam = cv2.VideoCapture(0)

# show video size
print (cam.get(3),cam.get(4))

# set video size
cam.set(3,screen_width/2)
cam.set(4,screen_height/2)

# setup window
winName = "Scope"
cv2.namedWindow(winName,cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty(winName, cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)

# setup mouse callback               
cv2.setMouseCallback('Scope',point)

# read foreground image
img2 = cv2.imread('Reticle4.jpg')
img3 = (255-img2)
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
mask = cv2.resize(mask,(screen_width,screen_height))

while True:
    # take video frame
    ok, img = cam.read()
    img = cv2.resize(img,(screen_width,screen_height))
    # add the 2 images
    if invert_mask == 0:
        added_image = cv2.bitwise_and(img,img,mask = mask)
    else:
        added_image = cv2.addWeighted(img,0.99,img3,0.7,0.2)
    # show image
    cv2.imshow( winName,added_image)
    # wait
    key = cv2.waitKey(10)
    # press Esc to EXIT
    if key == 27:
       cv2.destroyWindow(winName)
       break
Attachments
Reticle4.jpg.bz2
(70.91 KiB) Downloaded 5 times

User avatar
HermannSW
Posts: 1649
Joined: Fri Jul 22, 2016 9:09 pm
Location: Eberbach, Germany
Contact: Website Twitter YouTube

Re: Image overlay on live video feed

Mon Nov 18, 2019 1:54 pm

gordon77 wrote:
Sun Nov 17, 2019 9:17 am
This will show you the video size, and set it to 640 x 480...

Also a new mask.

Code: Select all

#!/usr/bin/env python3
import cv2
import os
import time

# setup pi camera 
...
    if key == 27:
       cv2.destroyWindow(winName)
       break

Thank's again for that script.
I have not done much with Python yet (more with MicroPython on ESP microcontrollers).
I was able to use my own sample_yuv_alpha plugin for bash i420toh264 pipeline.
But it did negatively affect the P only PID controller for stepper PT camera system.
I did need the fine haircross overlay for PID behavior inspection, so doing that in post processing was fine.
Normally I do video stuff with ffmpeg, but alpha blending onto a video seems not to be that simple.
Contrary to your script, which is simple.
So I created a file2file version of your script and used that:

Code: Select all

(cv) [email protected]:~ $ cat ovl.file2file.py 
#!/usr/bin/env python3
import cv2
import os
import time

# video from file
cap = cv2.VideoCapture('tst.h264')

# video output to file 
out = cv2.VideoWriter('outpy.avi',cv2.VideoWriter_fourcc('M','J','P','G'), 15, (640,480))

# read foreground image
img2 = cv2.imread('640x480.fine_crosshair_450.pgm')
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)

while True:
    # take video frame
    ok, img = cap.read()
    if not ok:
        break
    # add the 2 images
    added_image = cv2.bitwise_and(img,img,mask = mask)
    # write image
    out.write(added_image)
(cv) [email protected]:~ $ 

From the generated video (Python script slows down from [email protected] to 15fps) I created animated .gif of first 7 seconds with gifenc.sh, scaled down to 320x240 in order to keep size at 4MB. This allows to analyze automatic camera movement to blue point (generated by 2 heuristics) on black ball:
Image
Last edited by HermannSW on Mon Nov 18, 2019 2:07 pm, edited 3 times in total.
⇨https://stamm-wilbrandt.de/en/Raspberry_camera.html

https://github.com/Hermann-SW/Raspberry_v1_camera_global_external_shutter
https://stamm-wilbrandt.de/github_repo_i420toh264
https://github.com/Hermann-SW/fork-raspiraw
https://twitter.com/HermannSW

gordon77
Posts: 4292
Joined: Sun Aug 05, 2012 3:12 pm

Re: Image overlay on live video feed

Mon Nov 18, 2019 1:59 pm

I'm pleased it was helpful :D

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Mon Nov 18, 2019 3:02 pm

HermannSW wrote:
Mon Nov 18, 2019 1:54 pm
gordon77 wrote:
Sun Nov 17, 2019 9:17 am
This will show you the video size, and set it to 640 x 480...

Also a new mask.

Code: Select all

#!/usr/bin/env python3
import cv2
import os
import time

# setup pi camera 
...
    if key == 27:
       cv2.destroyWindow(winName)
       break

Thank's again for that script.
I have not done much with Python yet (more with MicroPython on ESP microcontrollers).
I was able to use my own sample_yuv_alpha plugin for bash i420toh264 pipeline.
But it did negatively affect the P only PID controller for stepper PT camera system.
I did need the fine haircross overlay for PID behavior inspection, so doing that in post processing was fine.
Normally I do video stuff with ffmpeg, but alpha blending onto a video seems not to be that simple.
Contrary to your script, which is simple.
So I created a file2file version of your script and used that:

Code: Select all

(cv) [email protected]:~ $ cat ovl.file2file.py 
#!/usr/bin/env python3
import cv2
import os
import time

# video from file
cap = cv2.VideoCapture('tst.h264')

# video output to file 
out = cv2.VideoWriter('outpy.avi',cv2.VideoWriter_fourcc('M','J','P','G'), 15, (640,480))

# read foreground image
img2 = cv2.imread('640x480.fine_crosshair_450.pgm')
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)

while True:
    # take video frame
    ok, img = cap.read()
    if not ok:
        break
    # add the 2 images
    added_image = cv2.bitwise_and(img,img,mask = mask)
    # write image
    out.write(added_image)
(cv) [email protected]:~ $ 

From the generated video (Python script slows down from [email protected] to 15fps) I created animated .gif of first 7 seconds with gifenc.sh, scaled down to 320x240 in order to keep size at 4MB. This allows to analyze automatic camera movement to blue point (generated by 2 heuristics) on black ball:
Image
Looks amazing! I can see a few uses for this both in practical and in cosplay areas

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Mon Nov 18, 2019 3:31 pm

gordon77 wrote:
Mon Nov 18, 2019 10:28 am
Church Lenard wrote:
Sun Nov 17, 2019 8:32 pm
gordon77 wrote:
Sun Nov 17, 2019 8:29 pm
Try changing it to

cv2.namedWindow(winName, cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty(winName, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
that kinda worked but its still got the same windowed size and the rest is white

edit: ok so after further inspection on this it displays nearly fullscreen its got a few pixels on the sides that are pure white and interfere slightly with the camera feed also the image has shrunk drastically is there a way to resize these to accommodate for the pixel loss?
I don't know why this didn't work correctly, in fact it does sometimes on my PI4 !.

Here's a workaround which reads the resolution of the monitor, sets the camera to half that (i found the colours odd if I set it to the same as my monitor at 1920 x 1080), it then scales to fit.

Note the new reticle4.jpg (zipped).

Code: Select all

#!/usr/bin/env python3
import cv2
import os
import time
import tkinter as tk

# read screen resolution
root = tk.Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
print (screen_width , screen_height)

invert_mask = 0

# mouse action
def point(event, x, y, flags, param):
    global invert_mask
    if event == cv2.EVENT_LBUTTONDOWN:
        if invert_mask == 0:
            invert_mask = 1
        else:
            invert_mask = 0

# setup pi camera 
if os.path.exists('/dev/video0') == False:
  path = 'sudo modprobe bcm2835-v4l2'
  os.system (path)
  time.sleep(1)
path = 'v4l2-ctl --set-ctrl=auto_exposure=0'
os.system (path)
  
# start video
cam = cv2.VideoCapture(0)

# show video size
print (cam.get(3),cam.get(4))

# set video size
cam.set(3,screen_width/2)
cam.set(4,screen_height/2)

# setup window
winName = "Scope"
cv2.namedWindow(winName,cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty(winName, cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)

# setup mouse callback               
cv2.setMouseCallback('Scope',point)

# read foreground image
img2 = cv2.imread('Reticle4.jpg')
img3 = (255-img2)
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
mask = cv2.resize(mask,(screen_width,screen_height))

while True:
    # take video frame
    ok, img = cam.read()
    img = cv2.resize(img,(screen_width,screen_height))
    # add the 2 images
    if invert_mask == 0:
        added_image = cv2.bitwise_and(img,img,mask = mask)
    else:
        added_image = cv2.addWeighted(img,0.99,img3,0.7,0.2)
    # show image
    cv2.imshow( winName,added_image)
    # wait
    key = cv2.waitKey(10)
    # press Esc to EXIT
    if key == 27:
       cv2.destroyWindow(winName)
       break
K so i ran the code and it looks great however is there a way to up the framelimit? its running at about 10fps i think

User avatar
HermannSW
Posts: 1649
Joined: Fri Jul 22, 2016 9:09 pm
Location: Eberbach, Germany
Contact: Website Twitter YouTube

Re: Image overlay on live video feed

Mon Nov 18, 2019 4:37 pm

Church Lenard wrote:
Mon Nov 18, 2019 3:02 pm
Looks amazing! I can see a few uses for this both in practical and in cosplay areas
You can find the details here:
https://www.raspberrypi.org/forums/view ... 3#p1568093
⇨https://stamm-wilbrandt.de/en/Raspberry_camera.html

https://github.com/Hermann-SW/Raspberry_v1_camera_global_external_shutter
https://stamm-wilbrandt.de/github_repo_i420toh264
https://github.com/Hermann-SW/fork-raspiraw
https://twitter.com/HermannSW

carcela
Posts: 7
Joined: Tue Apr 26, 2016 3:07 pm

Re: Image overlay on live video feed

Tue Nov 19, 2019 1:35 am

Church Lenard wrote:
Mon Nov 18, 2019 5:20 am
carcela wrote:
Mon Nov 18, 2019 3:42 am
Hi,
You can use pi3d:
https://github.com/tipam/pi3d
pi 3d looks great and all but its really too much of a hassle to work in a 3d plane to switch back to a 2d plane when all i need to do now is scale up an image
Hi,
I already worked on a digital telescope, I advise you to use Picamera (1% of the cpu) instead of opencv (more than 20% cpu) and to display your reticle with pi3d. My program did not take more than 5% cpu with a more sophisticated screen. What is the cpu percentage after executing your program?

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Tue Nov 19, 2019 5:12 am

Hi,
I already worked on a digital telescope, I advise you to use Picamera (1% of the cpu) instead of opencv (more than 20% cpu) and to display your reticle with pi3d. My program did not take more than 5% cpu with a more sophisticated screen. What is the cpu percentage after executing your program?
looks to be below 50%

Church Lenard
Posts: 34
Joined: Wed May 01, 2019 4:45 pm

Re: Image overlay on live video feed

Wed Nov 20, 2019 7:25 pm

gordon77 wrote:
Sun Nov 17, 2019 9:17 am
This will show you the video size, and set it to 640 x 480...

Also a new mask.

Code: Select all

#!/usr/bin/env python3
import cv2
import os
import time

# setup pi camera 
if os.path.exists('/dev/video0') == False:
  path = 'sudo modprobe bcm2835-v4l2'
  os.system (path)
  time.sleep(1)
path = 'v4l2-ctl --set-ctrl=auto_exposure=0'
os.system (path)
  
# start video
cam = cv2.VideoCapture(0)

# show video size
print (cam.get(3)  , cam.get(4))

# set video size
cam.set(3,640)
cam.set(4,480)

# setup window
winName = "Scope"
cv2.namedWindow(winName)

# read foreground image
img2 = cv2.imread('Reticle2.jpg')
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)

while True:
    # take video frame
    ok, img = cam.read()
    # add the 2 images
    added_image = cv2.bitwise_and(img,img,mask = mask)
    # show image
    cv2.imshow( winName,added_image)
    # wait
    key = cv2.waitKey(10)
    # press Esc to EXIT
    if key == 27:
       cv2.destroyWindow(winName)
       break
and a version with black or white reticle with a click of the mouse...

Code: Select all

#!/usr/bin/env python3
import cv2
import os
import time

invert_mask = 0

# mouse action
def point(event, x, y, flags, param):
    global invert_mask
    if event == cv2.EVENT_LBUTTONDOWN:
        if invert_mask == 0:
            invert_mask = 1
        else:
            invert_mask = 0
      
# setup pi camera 
if os.path.exists('/dev/video0') == False:
  path = 'sudo modprobe bcm2835-v4l2'
  os.system (path)
  time.sleep(1)
path = 'v4l2-ctl --set-ctrl=auto_exposure=0'
os.system (path)
  
# start video
cam = cv2.VideoCapture(0)

# show video size
print (cam.get(3),cam.get(4))

# set video size
cam.set(3,640)
cam.set(4,480)

# setup window
winName = "Scope"
cv2.namedWindow(winName)

# setup mouse callback               
cv2.setMouseCallback('Scope',point)

# read foreground image
img2 = cv2.imread('Reticle2.jpg')
img3 = (255-img2)
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)

while True:
    # take video frame
    ok, img = cam.read()
    # add the 2 images
    if invert_mask == 0:
        added_image = cv2.bitwise_and(img,img,mask = mask)
    else:
        added_image = cv2.addWeighted(img,0.99,img3,0.7,0.2)
    # show image
    cv2.imshow( winName,added_image)
    # wait
    key = cv2.waitKey(10)
    # press Esc to EXIT
    if key == 27:
       cv2.destroyWindow(winName)
       break
Hey so ive gotten this code running in 640x480 and it runs better than the 1920x1080 and i was wondering if there was a way to make the image a bit larger for the 640x480 code?

gordon77
Posts: 4292
Joined: Sun Aug 05, 2012 3:12 pm

Re: Image overlay on live video feed

Thu Nov 21, 2019 9:20 am

You could change your monitor to 640x480.

Assuming you are using the GUI..

Choose Preferences from Menu
Choose Screen Configuration
Choose Screens
Choose HDMI-1
Choose Resolution
Choose 640x480
Click on the Green Tick
Choose OK

Return to “Camera board”