Я использую оболочку Python, PyPylon , для управления камерой Basler, чтобы я мог получать изображения, которые затем буду обрабатывать с использованием функции MATLAB.
Pythonscript :
import pypylon
import matlab.engine
# Camera
available_cameras = pypylon.factory.find_devices()
cam = pypylon.factory.create_device(available_cameras[0])
cam.open()
cam.properties['GainAuto']
cam.properties['CenterX']=True
cam.properties['CenterY']=True
cam.properties['Width'] = 1600
cam.properties['Height']= 1600
cam.properties['ExposureTime'] = 30000
cam.properties['AcquisitionFrameRateEnable'] = True
cam.properties['AcquisitionFrameRate'] = 30
while True:
try:
N = int(input('Number of images to capture: '))
break
except ValueError:
print('Invalid input.')
eng = matlab.engine.start_matlab()
imageList = matlab.uint8(list(cam.grab_images(N)))
im1 = imageList[0]
im2 = imageList[1]
F = eng.FUJI(im1, im2) # Image processing Matlab function
eng.imshow(F)
cam.close()
Функция Matlab:
function result = FUJI(image1, image2)
top = abs(image1 - image2);
bottom = image1 + image2;
result = top./bottom;
Я получаю: ValueError: инициализатор должен быть прямоугольной вложенной последовательностью и я не могу понять, как это исправить.
Кроме того, если у кого-нибудь есть какие-либо советы о том, как сделать весь этот процесс более простым, это было бы весьма полезно!Соединение Python и MATLAB кажется довольно сложной задачей!