OpenCV 角点检测和特征匹配错误解决:'Unsupported depth of input image'
这个错误提示是因为在代码中使用了 np.float32() 将图像转换为浮点型,而在后续的操作中使用了 cv2 的函数,cv2 函数只支持 8 位无符号整型和 32 位浮点型图像。因此,可以将 np.float32() 改为 np.uint8(),或者在后续操作中使用相应的函数进行类型转换。
例如,在 cv2.cornerHarris() 函数之后,可以使用 cv2.normalize() 函数将结果转换为 8 位无符号整型图像。
import cv2
import numpy as np
from matplotlib import pyplot as plt
img1 = cv2.imread('1.png')
img2 = cv2.imread('4.png')
gray1 = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
gray1 = np.float32(gray1)
dst1 = cv2.cornerHarris(gray1,2,3,0.04)
# 将结果转换为 8 位无符号整型图像
dst1 = cv2.normalize(dst1, None, 255,0, cv2.NORM_MINMAX, cv2.CV_8U)
img1[dst1>0.1*dst1.max()] = [0,0,255]
gray2 = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
gray2 = np.float32(gray2)
dst2 = cv2.cornerHarris(gray2,2,23,0.04)
# 将结果转换为 8 位无符号整型图像
dst2 = cv2.normalize(dst2, None, 255,0, cv2.NORM_MINMAX, cv2.CV_8U)
img2[dst2>0.1*dst2.max()] = [0,0,255]
# ... 其他代码 ...
需要注意的是,在使用 np.uint8() 转换图像类型时,可能会导致图像信息丢失,因此建议在必要时使用其他方法进行类型转换。
原文地址: https://www.cveoy.top/t/topic/kntE 著作权归作者所有。请勿转载和采集!