在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
隨取,不謝 ~~~