Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python can';t在numpy阵列图像上使用SIFT_Python_Opencv_Sift - Fatal编程技术网

Python can';t在numpy阵列图像上使用SIFT

Python can';t在numpy阵列图像上使用SIFT,python,opencv,sift,Python,Opencv,Sift,我打开脑部核磁共振扫描: path = os.path.join(r"C:\temp\generated_noisy\patients", lst_of_filenames[index_of_filename]) scan = nib.load(path) data = scan.get_data() data = data[14:168,18:205,98] 现在“data”是一个numpy数组(其中的元素是“numpy.float64”): 有人知道怎么解决这个问题吗?我似乎在网上找不到

我打开脑部核磁共振扫描:

path = os.path.join(r"C:\temp\generated_noisy\patients", 
lst_of_filenames[index_of_filename])
scan = nib.load(path)
data = scan.get_data()
data = data[14:168,18:205,98]
现在“data”是一个numpy数组(其中的元素是“numpy.float64”):


有人知道怎么解决这个问题吗?我似乎在网上找不到任何帮助…

SIFT希望数据类型为
uint8
。但是,如果值不在正确的范围内,例如大于255或在0-1范围内,则无法仅将数组转换为
uint8
。转换之前,可以缩放值,使值在0-255范围内。例如,下面将减去最小值,使最小值为零,然后缩放,使最大值为255。然后可以转换为类型
uint8
,而不会损坏图像

data = (data - np.min(data)) * 255 / np.max(data)
data = data.astype(np.uint8)
OpenCV(3.4.2) C:\projects\opencv- 
python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1121: error: (-5:Bad 
argument) image is empty or has incorrect depth (!=CV_8U) in function 
'cv::xfeatures2d::SIFT_Impl::detectAndCompute'
data = (data - np.min(data)) * 255 / np.max(data)
data = data.astype(np.uint8)