Arducam 16MP IMX298 only producing 2MP images

I recently bought 8 psc 16MP IMX298 cameras but for some reason the images outputed are max 1600x1200px, but should be 4656,3496. I’m using python to take images, with pygame libery. Code is:

import pygame.camera
import pygame.image
import os

# initialize Pygame
pygame.init()

# initialize Pygame camera
pygame.camera.init()

# get the list of available cameras
cameras = pygame.camera.list_cameras()

os.system('clear')

print("Cameras:", cameras)

# if there are no cameras, exit the script
if not cameras:
    print("No cameras found.")
    exit()

# create a Pygame camera object with the first available camera
camera = pygame.camera.Camera(cameras[0], (4656,3496))

# start capturing images from the camera
camera.start()

# capture an image
image = camera.get_image()

# save the image to a file
pygame.image.save(image, "image.jpg")

# stop capturing images from the camera
camera.stop()

# quit Pygame
pygame.quit()

If anyone knows how to get the full resolution using python, help would be very appreciated!

@Anders

Can you try it with opencv?

We actually do have the same issue and cant find a solution to it.
USB 16MP Wide Angle Camera Module https://www.uctronics.com/download/Amazon/B0268.pdf

In Windows 11 it works instantly but we need it to work on our Nvidia Jetson Orin AGX running Jetson Linux 35.3.1.
Opening the program Cheese lets us only select at max. 1600x1200 and the issue persists once we try accesing it via Gstreamer or OpenCV.

Got it working with OpenCV

Try this python script

import cv2

capture = cv2.VideoCapture(0, cv2.CAP_V4L2)
capture.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))
capture.set(cv2.CAP_PROP_FRAME_WIDTH, 4656)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 3496)  

while(True): 
    # Take picture
    frame = capture.read()
    # Show picture in opencv
    cv2.imshow('frame', frame)
    # Press q too quit
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cv2.imwrite("min_bild.jpg", frame)
capture.release()
cv2.destroyAllWindows()

doesnt work for us.
as soon as we set a resolution above 1600x1200 it crashes.