error: (-215:Assertion failed) func != 0 in function ‘cv::hal::resize‘opencv

ir图为8bit,图像如下:
error: (-215:Assertion failed) func != 0 in function ‘cv::hal::resize‘opencv_第1张图片

用cv2.imread(ir_path)默认读入的是三通道彩色图,正确的打开方式如下,参数-1即代表8位深度,原通道读入:

image = cv2.imread(img_path, -1)

注:cv2.imread(path,flag),其中flag参数取值含义具体为:

flag=-1时,8位深度,原通道

flag=0,8位深度,1通道

flag=1, 8位深度 ,3通道

flag=2,原深度,1通道

flag=3, 原深度,3通道

flag=4,8位深度 ,3通道

对ir图的像素取log,预处理完后应该能够可视化,结果变成全白的图片,定位问题的原因是图片数据的类型不对,进行转换:

image = np.array(image).astype(np.int8)

转换完成后的图片:
error: (-215:Assertion failed) func != 0 in function ‘cv::hal::resize‘opencv_第2张图片
运行程序时报错:

\resize.cpp:3923: error: (-215:Assertion failed) func != 0 in function ‘cv::hal::resize‘opencv 

百度后发现不管是打开一个图像或者是接收矩阵生成一个图像他们都应为dtype=“uint8”,参考博客,所以进行如下类型转换后问题解决

image = image.astype("uint8")

你可能感兴趣的:(error: (-215:Assertion failed) func != 0 in function ‘cv::hal::resize‘opencv)