什么是 'cv2.reg_MapperGradEuclid' 对象?(OpenCV)

2024-10-03 13:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用opencv4和python3.6进行一些图像配准。加载两个dicom文件,像素数据作为numpy.ndarray处理。当我尝试将这些数组传递给cv2.reg_MapperGradEuclid.calculate()函数时,出现以下错误:

descriptor 'calculate' requires a cv2.reg_MapperGradEuclid object but received a 'numpy.ndarray'

我查阅了文档和几个线程,只发现应该有两个InputArray应该是BGR类型(?)从技术上讲np.ndarray应该是可行的。你知道吗

    import numpy as np    
    import pydicom    
    import cv2    

    file1="one.DCM"    
    file2="two.DCM"    
    data1 = pydicom.read_file(file1)    
    data2 = pydicom.read_file(file2)    

    PixelArrayBelow = data1.pixel_array         #type np.ndarray
    PixelArrayAbove = data2.pixel_array    

    PixelArrayBelow=PixelArrayBelow.astype(np.float32)    
    PixelArrayAbove=PixelArrayAbove.astype(np.float32)    

    BelowNew=cv2.cvtColor(PixelArrayBelow,cv2.COLOR_GRAY2BGR)    
    AboveNew=cv2.cvtColor(PixelArrayAbove,cv2.COLOR_GRAY2BGR)    

    b = cv2.reg_MapperGradEuclid.calculate(BelowNew,AboveNew)    
    print(b)

我希望它打印一些平移和旋转向量/矩阵的组合,但出现了上述错误。你知道吗


Tags: importnumpy错误npregcv2file1file2
1条回答
网友
1楼 · 发布于 2024-10-03 13:25:19

如果您先创建一个reg_MapperGradEuclid()对象,然后将图像传递到该对象中,它似乎可以工作。您没有正确调用对象。你知道吗

import cv2

im1 = <some numpy array>
im2 = <some numpy array>

mge_obj = cv2.reg_MapperGradEuclid()
retval = mge_obj.calculate(im1, im2)

因此,要使其与代码更改一起工作:

b = cv2.reg_MapperGradEuclid.calculate(BelowNew,AboveNew)

收件人:

b = cv2.reg_MapperGradEuclid().calculate(BelowNew,AboveNew)

类文档是here,但它非常基本。你知道吗

相关问题 更多 >