在python中,我们经常会需要对图片做灰度/二值化/模糊等处理,这时候opencv就是我们的好帮手了,下面我来介绍一下相关用法:
首先,需要安装opencv-python库:
然后,在你的代码中引用:
import cv2
最后就是代码了,这里列出上述几种常规图片处理的方法,为了方便取用我已经做成了函数:
def process_image(image_path, mode="灰度"):try:# 读取图片(灰度和二值化处理时,直接以灰度图像读入)image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE if mode != "高斯模糊" else cv2.IMREAD_COLOR)if image is None:return "抱歉,无法读取图片。请检查路径是否正确。"# endif# 根据模式处理图片if mode == "灰度":processed_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) if len(image.shape) == 3 else image #如果是RGB图像才转换,否则直接返回原图像output_path = "processed_grayscale_image.jpg"elif mode == "二值化":_, processed_image = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)output_path = "processed_binary_image.jpg"elif mode == "高斯模糊":processed_image = cv2.GaussianBlur(image, (15, 15), 0)output_path = "processed_blurred_image.jpg"else:return "抱歉,不支持该图片处理模式。"# endif# 保存处理后的图片cv2.imwrite(output_path, processed_image)return f"图片已处理并保存为 {output_path}。"except Exception as e:return f"抱歉,图片处理时出错了: {str(e)}"#end try#end def
如果需要快速显示前面处理的结果,用下面的函数即可:
def show_image(image_path):try:# 读取图片image = cv2.imread(image_path)if image is None:return "抱歉,无法读取图片。请检查路径是否正确。"# endif# 显示图片cv2.imshow("Image", image)cv2.waitKey(0)cv2.destroyAllWindows()return "图片已显示。"except Exception as e:return f"抱歉,显示图片时出错了: {str(e)}"#end try#end def
随取,不谢 ~~~