收割机(genicam)在高线速时触发问题 |相机:Teledyne dalsa

问题描述 投票:0回答:1

我使用 Teledyne Dalsa 线扫描相机。有时,当我将 Teledyne Dalsa 线扫描相机的线速率提高到 13000 或更高并使用 Arduino 以 3V3 触发它时,每次触发时都不会一致地从缓冲区捕获图像,这与线速率为 10000 或更低时不同。 触发器似乎在 Sapera 软件中完美运行,可提高线路速率。

附上代码:

import platform
import os
import sys
import time
from harvesters.core import Harvester
import cv2
import numpy as np

h = Harvester()

gentl_file = r"C:\Program Files\MATRIX VISION\mvIMPACT Acquire\bin\x64\mvGenTLProducer.cti"

h.add_file(gentl_file)
h.update()

ia = h.create(0)
ia.remote_device.node_map.Width.value = 2048
ia.remote_device.node_map.Height.value = 2000
ia.remote_device.node_map.PixelFormat.value = 'RGB8'
ia.remote_device.node_map.AcquisitionLineRate.set_value(15000)
ia.remote_device.node_map.ExposureTime.set_value(47)
ia.remote_device.node_map.Gain.set_value(6)
ia.remote_device.node_map.TriggerSelector.value = "FrameBurstStart"
ia.remote_device.node_map.TriggerMode.value = "On"
ia.remote_device.node_map.triggerFrameCount.set_value(1) # new
ia.remote_device.node_map.TriggerSource.value = "Line2"
ia.remote_device.node_map.TriggerActivation.value = "RisingEdge"
ia.remote_device.node_map.TriggerDelay.set_value(0.0) # new
ia.remote_device.node_map.triggerDelaySource.value = "lineTriggerSignal" # new

ia.remote_device.node_map.LineSelector.value = "Line2"
ia.remote_device.node_map.LineFormat.value = "SingleEnded"

ia.remote_device.node_map.lineDetectionLevel.value = "Threshold_for_3V3"
ia.remote_device.node_map.LineInverter.value = False 
ia.remote_device.node_map.lineDebouncingPeriod.value = 0
ia.remote_device.node_map.lineElectricalTermination.value = "Disabled"

ia.start()

start = time.time()

ia.start()

def image_capture():
    global ia
    print('Image capture started')
    lst_app = []
    with ia.fetch() as buffer:
        component = buffer.payload.components[0]
        _2d_new = component.data.reshape(component.height,component.width,int(component.num_components_per_pixel))
        _2d_new = cv2.cvtColor(_2d_new , cv2.COLOR_RGB2BGR)
        lst_app.append(_2d_new)

    if len(lst_app) == 1:
        print('Buffer is full')
        arr = np.vstack(lst_app)
        lst_app = []

        return np.array(arr)

count = 0
while True:
    image = image_capture()
    print('captured', count)
    count += 1

提前致谢

即使包含了 Sapera 软件中的所有参数,对于某些触发器,图像仍然不会返回。

python camera genicam matrix-vision sapera
1个回答
0
投票

我可以知道你从哪里获得 dalsa 相机的 cti 文件吗?

© www.soinside.com 2019 - 2024. All rights reserved.