發表文章

目前顯示的是 6月, 2025的文章

使用 OpenCV DNN 模組與 Res10 SSD 進行人臉偵測

圖片
OpenCV DNN 模組使用 Res10 SSD 進行人臉偵測教學 使用 OpenCV DNN 模組與 Res10 SSD 進行人臉偵測教學 OpenCV 提供了強大的 DNN 模組,讓我們能輕鬆載入深度學習預訓練模型並進行物件偵測。本教學將示範如何使用 Res10 SSD 模型對圖片中的人臉進行偵測,並詳細解說核心程式碼與座標換算邏輯。 一、教學目標與環境準備 使用 OpenCV DNN 模組載入 Res10 SSD 人臉偵測模型 從圖片中偵測人臉位置 在圖片中繪製偵測到的人臉方框 深入解析模型輸出座標如何轉換成像素座標 需準備: OpenCV(建議版本4.x以上) Res10 SSD 模型權重檔 res10_300x300_ssd_iter_140000_fp16.caffemodel 模型配置檔 deploy.prototxt 測試圖片(如 faces2.jpg ) 二、完整程式碼範例 import cv2 model_path = r"ch03/models/Res10_ssd/res10_300x300_ssd_iter_140000_fp16.caffemodel" config_path = r"ch03/models/Res10_ssd/deploy.prototxt" model = cv2.dnn.readNet(model=model_path, config=config_path, framework='Caffe') image = cv2.imread(r"ch03/images/faces2.jpg") image_height, image_width, _ = image.shape blob = cv2.dnn.blobFromImage(image, 1.0, (300, 300), (104.0, 177)) model.setInput(blob) detections = model.forward() for face in detections[0][0]: face_confidence = face[2] pr...

使用 OpenCV DNN 與 DenseNet-121 模型進行圖片分類

圖片
使用 OpenCV DNN 與 DenseNet-121 模型進行圖片分類教學 使用 OpenCV DNN 與 DenseNet-121 模型進行圖片分類教學 在這篇教學中,我將帶你一步步使用 OpenCV 的 DNN 模組,搭配 DenseNet-121 預訓練模型,對圖片進行物件分類。無論你是初學者還是有些基礎,這份教學都能幫助你快速上手。 一、準備工作 1. 安裝環境 請先確定你已安裝以下套件: pip install opencv-python numpy 注意:建議使用 OpenCV 4.5 以上版本,因為較新版改善了 DNN 模組的穩定性和功能。 2. 下載模型與資料 DenseNet_121.caffemodel :模型權重檔 DenseNet_121.prototxt :網路結構描述檔 classification_classes_ILSVRC2012.txt :分類名稱清單(ImageNet 1000 類) 請將以上檔案放到你的專案資料夾,例如: ch03/ ├─ models/ │ ├─ DenseNet_121.caffemodel │ ├─ DenseNet_121.prototxt │ └─ classification_classes_ILSVRC2012.txt └─ images/ └─ cat3.jpg 重要提醒: 確認檔案副檔名正確,特別是 prototxt 檔不要誤加 .txt ,這會造成讀取失敗。 二、程式碼詳解 以下是完整範例程式碼,我會逐步說明每個部分的功能與用法。 import cv2 import numpy as np # 模型與分類標籤路徑 model_path = r"ch03/models/DenseNet_121.caffemodel" config_path = r"ch03/models/DenseNet_121.prototxt" classifier_path = r"ch03/models/classification_classes_ILSVRC2012.txt" # ...

OpenCV Haar 特徵人臉偵測詳細教學

圖片
OpenCV Haar 特徵人臉偵測詳細教學 OpenCV Haar 特徵人臉偵測詳細教學 一、簡介 Haar特徵分類器(Haar Cascade Classifier)是由 Paul Viola 和 Michael Jones 提出的一種快速目標檢測方法,常用於人臉偵測。OpenCV 內建多組訓練好的 Haar 分類器 XML 檔案,可直接使用。 本教學示範如何使用 OpenCV 搭配 Haar 分類器快速偵測影像中的人臉。 二、開發環境需求 Python 3.x OpenCV-python(可用指令安裝: pip install opencv-python ) imutils(方便影像縮放,安裝指令: pip install imutils ) OpenCV 官方的 Haar 分類器 XML 檔案(本例使用 haarcascade_frontalface_default.xml ) 三、程式碼完整範例 import cv2 import imutils # 1. 載入人臉分類器 XML 檔 faceCascade = cv2.CascadeClassifier("ch03/haarcascades/haarcascade_frontalface_default.xml") # 2. 讀取影像檔案 image = cv2.imread("ch03/images/20250115194509_0_551ff3.jpg") # 3. 調整影像大小(寬度600像素),保持比例縮放 image = imutils.resize(image, width=600) # 4. 將影像轉成灰階,Haar分類器需灰階影像作為輸入 gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) # 5. 偵測人臉 faces = faceCascade.detectMultiScale( gray, scaleFactor=1.1, # 每次影像尺寸縮小比例,越接近1越精細但越慢 minNeighbors=5, # 欲保留的...

OpenCV Python :實作滑鼠選取區域並套用馬賽克效果

OpenCV Python 滑鼠選取區域套用馬賽克效果 OpenCV Python :滑鼠選取區域並套用馬賽克效果 本篇教學會帶你一步步了解一個使用 OpenCV 與 Python 撰寫的程式,如何讓你用滑鼠在影像上拖拉選取區域,並在該選區套用馬賽克(像素化)效果。最後會附上詳細程式碼解說與執行說明。 一、功能概述 開啟一張影像並顯示 使用者用滑鼠「左鍵拖拉」選取想套用馬賽克的矩形區域 放開滑鼠左鍵後,在選取區域套用馬賽克 持續可重複選取與套用 按 ESC 鍵可離開程式 二、使用到的工具與函式庫 OpenCV (cv2) :影像讀取、顯示、處理與滑鼠事件等 Python :撰寫邏輯與控制流程 三、程式碼流程說明 import cv2 # 全域變數(方便多函式共用) image = None # 原始影像 clone = None # 影像複本,用來畫選取框,不破壞原影像 start_point = None # 滑鼠拖拉起點 (x, y) end_point = None # 滑鼠拖拉終點 (x, y) drawing = False # 紀錄是否正在拖拉滑鼠 def apply_mosaic(image, start_point, end_point, mosaic_size=15): """ 在指定區域套用馬賽克效果。 透過縮小再放大區域影像,產生像素化效果。 :param image: 原始影像 (numpy array) :param start_point: 左上角座標 (x1, y1) :param end_point: 右下角座標 (x2, y2) :param mosaic_size: 馬賽克方塊大小(越小馬賽克越粗糙) :return: 修改後的影像 (同一物件) """ x1, y1 = start_point x2, y2 = end_point # 確保座標是左上(x1,y1),右下(...