我打开一个脑部MRI扫描:
path = os.path.join(r"C:tempgenerated_noisypatients",
lst_of_filenames[index_of_filename])
scan = nib.load(path)
data = scan.get_data()
data = data[14:168,18:205,98]
所以现在"data"是一个numpy数组(其中的元素是"numpy.foat64"(:
print(pic.shape)
print(type(pic))
print(type(pic[50,50]))
(154, 187)
<class 'numpy.ndarray'>
<class 'numpy.float64'>
好吧,现在我尝试使用SIFT:kp,des=sift.dedetectAndCompute(pic,无(
我得到这个错误:
OpenCV(3.4.2) C:projectsopencv-
pythonopencv_contribmodulesxfeatures2dsrcsift.cpp:1121: error: (-5:Bad
argument) image is empty or has incorrect depth (!=CV_8U) in function
'cv::xfeatures2d::SIFT_Impl::detectAndCompute'
有人知道怎么解决这个问题吗?我似乎在网上找不到任何帮助。。。
SIFT期望数据类型为uint8
。但是,如果值不在正确的范围内(例如大于255或在0-1范围内(,则不能仅将数组转换为uint8
。在转换之前,可以缩放值,使值在0-255之间。例如,下面将减去最小值,使最小值为零,然后缩放,使最大值为255。然后,您可以在不损坏图像的情况下转换为类型uint8
。
data = (data - np.min(data)) * 255 / np.max(data)
data = data.astype(np.uint8)