我正在尝试用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)
我希望它打印一些平移和旋转向量/矩阵的组合,但出现了上述错误。你知道吗
如果您先创建一个
reg_MapperGradEuclid()
对象,然后将图像传递到该对象中,它似乎可以工作。您没有正确调用对象。你知道吗因此,要使其与代码更改一起工作:
b = cv2.reg_MapperGradEuclid.calculate(BelowNew,AboveNew)
收件人:
b = cv2.reg_MapperGradEuclid().calculate(BelowNew,AboveNew)
类文档是here,但它非常基本。你知道吗
相关问题 更多 >
编程相关推荐