Я работаю с цветной камерой Allied Vision и пытаюсь получить цветные изображения. Я использую следующий код для создания изображения:
import pymba
import numpy
import cv2
import time
import os
Camera = None
Vimba = None
ID = "myID"
def GetCamera():
'''
Applies the Singleton pattern to create unique vimba and camera instances.
Thus those are only once created.
'''
global ID
global Camera
global Vimba
if Camera is None:
# Create vimba instance
Vimba = pymba.Vimba()
# Startup vimba
Vimba.startup()
# Get system object
System = Vimba.getSystem()
# Discover cameras
if System.GeVTLIsPresent:
System.runFeatureCommand("GeVDiscoveryAllOnce")
time.sleep(0.200)
# Assign camera
Camera = Vimba.getCamera(ID)
# Open camera
Camera.openCamera()
# Set acquisition modes
Camera.AcquisitionMode = "Continuous"
return Camera
def Shutdown():
'''
tears down the component
'''
global Vimba
if Vimba is not None:
Vimba.shutdown()
def Snapshot():
'''
Uses the global camera object to generate a new image.
'''
Camera = GetCamera()
# Start capture
Camera.startCapture()
# Assign frames
Frames = [Camera.getFrame() for _ in range(1)]
# Iterate each frame
for Frame in Frames:
# Announce frame
Frame.announceFrame()
# Queue frame capture
Frame.queueFrameCapture()
# Acquisition
Camera.runFeatureCommand("AcquisitionStart")
time.sleep(0.500)
Camera.runFeatureCommand("AcquisitionStop")
# Wait for frame buffer
Frame.waitFrameCapture()
# Convert image
Image = numpy.ndarray(buffer=Frame.getBufferByteData(),
dtype=numpy.uint8,
shape=(Frame.height, Frame.width, 1)
)
cv2.imshow("example", Image)
cv2.waitKey(0)
# Cleanup
Camera.endCapture()
Camera.revokeAllFrames()
Snapshot()
Это создает изображение в градациях серого, а установка формы (Frame.height, Frame.width, 3) приведет к ошибке (так как буфер слишком большой). Может кто-нибудь, пожалуйста, предоставьте мне пример кода для создания цветного изображения. Я не хочу конвертировать градации серого в rgb, используя opencv. Я хочу оригинальное изображение с камеры (на самом деле цветное)