我用Cython包装了一个第三方相机库接口,这样我就可以从python程序调用它了。大多数情况下,一切都很好,但是我在acquireImage()函数中遇到了一个问题。我尝试创建一个连续的numpy数组,将其传递给库,并在库完成填充后获取结果。最后,我想复制这个数组,重塑它并返回它。(整形的东西还没有编码)
这是我的代码:
在cpixis.pxd公司公司名称:
ctypedef bint rs_bool
ctypedef unsigned short uns16
ctypedef short int16
ctypedef unsigned int uns32
ctypedef unsigned int* uns32_ptr
ctypedef void* void_ptr
ctypedef char* char_ptr
ctypedef short* int16_ptr
ctypedef struct rgn_type:
short s1
short s2
short sbin
short p1
short p2
short pbin
ctypedef rgn_type* rgn_const_ptr
ctypedef rgn_type* rgn_ptr
#cdef CAM_NAME_LEN 32
cdef extern from "/usr/local/pvcam/examples/pvcam.h":
cdef enum cam_open:
OPEN_EXCLUSIVE
cdef enum exposure:
TIMED_MODE, STROBED_MODE, BULB_MODE, TRIGGER_FIRST_MODE, FLASH_MODE, VARIABLE_TIMED_MODE, INT_STROBE_MODE
cdef enum readout:
READOUT_NOT_ACTIVE, EXPOSURE_IN_PROGRESS, READOUT_IN_PROGRESS, READOUT_COMPLETE,
FRAME_AVAILABLE = READOUT_COMPLETE, READOUT_FAILED, ACQUISITION_IN_PROGRESS, MAX_CAMERA_STATUS
rs_bool pl_pvcam_init()
rs_bool pl_pvcam_uninit()
rs_bool pl_cam_get_name(int16 cam_num, char_ptr camera_name)
rs_bool pl_cam_open(char_ptr camera_name, int16_ptr hcam, int16 o_mode)
rs_bool pl_cam_close(int16 hcam)
rs_bool pl_pvcam_uninit()
rs_bool pl_exp_init_seq()
rs_bool pl_exp_setup_seq (int16 hcam, uns16 exp_total,
uns16 rgn_total, rgn_const_ptr rgn_array,
int16 exp_mode, uns32 exposure_time,
uns32_ptr exp_bytes)
rs_bool pl_exp_start_seq (int16 hcam, void_ptr pixel_stream)
rs_bool pl_exp_check_status (int16 hcam, int16_ptr status, uns32_ptr bytes_arrived)
int16 pl_error_code()
rs_bool pl_exp_finish_seq (int16 hcam, void_ptr pixel_stream, int16 hbuf)
rs_bool pl_exp_uninit_seq ()
在皮克斯.pyx公司名称:
^{pr2}$第64行和66行有相同的错误,即“无法获取Python变量的地址。”我一直在研究另一个类似的问题here。在
有没有一种方法可以解决这个问题,或者我应该用不同的方式来处理这个问题?在
谢谢!在
在acquireImage()函数中,我使用了正确的思想,但是忘记从self.u帧引用中删除“self”。我刚开始时将_frame声明为非局部变量,但当我将其移动到局部范围时,忘记了更新函数中的引用。我去掉了多余的自我,问题就解决了。在
相关问题 更多 >
编程相关推荐