原代码是下面这样读图像的:
im = Image.open(path).convert('RGB')
im = np.array(im, dtype=np.uint8)
im = im / 255.
现在我要对图像进行opencv里面的锐化处理,结果出错了,查了一下数组类型超过的opencv支持的类型就会出错,数组类型是float64,要先转为float32,再调用opencv的锐化操作,然后还原到原类型进行后续代码操作。
im = im *255
im = im .astype(np.uint8) #转32F
im = cv.cvtColor(im , cv.COLOR_RGB2BGR)
cv.imwrite(r'Results/1.png', im )
sharpen_img = cv.filter2D(im , cv.CV_32F, self.sharpen_op) #锐化
sharpen_img = cv.convertScaleAbs(sharpen_img)
sharpen_img = Image.fromarray(cv.cvtColor(sharpen_img, cv.COLOR_BGR2RGB)) # opencv转PIL
sharpen_img.save('Results/2.png')
sharpen_img = np.array(sharpen_img, dtype=np.uint8)
sharpen_img = sharpen_img / 255. # 还原成float64进行后续处理
plt.imsave(r'Results/3.png', sharpen_img)
转来转去感觉比较麻烦,笨办法,不知道有没有更简单的操作。