国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之四 簡單行人人體檢測效果

這篇具有很好參考價值的文章主要介紹了Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之四 簡單行人人體檢測效果。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之四 簡單行人人體檢測效果

目錄

Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之四 簡單行人人體檢測效果

一、簡單介紹

二、簡單行人人體檢測效果實現(xiàn)原理

三、簡單行人人體檢測效果案例實現(xiàn)簡單步驟

四、注意事項


一、簡單介紹

Python是一種跨平臺的計算機程序設計語言。是一種面向?qū)ο蟮膭討B(tài)類型語言,最初被設計用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越多被用于獨立的、大型項目的開發(fā)。Python是一種解釋型腳本語言,可以應用于以下領域: Web 和 Internet開發(fā)、科學計算和統(tǒng)計、人工智能、教育、桌面界面開發(fā)、軟件開發(fā)、后端開發(fā)、網(wǎng)絡爬蟲。

這里使用 Python? 基于 OpenCV 進行視覺圖像處理,......

OpenCV 提供了一些已經(jīng)訓練好的級聯(lián)分類器,這些級聯(lián)分類器以XML文件的方式保存在以下路徑中:

...\Python\Lib\site-packages\cv2\data\

OpenCV提供了一些經(jīng)過預訓練的人臉檢測器模型文件,這些文件通常包含在OpenCV的安裝包中。你也可以在OpenCV的官方GitHub頁面或者OpenCV官方網(wǎng)站的下載頁面找到這些模型文件的下載鏈接。

一般來說,你可以從以下位置獲取OpenCV的預訓練模型文件:

??????? OpenCV GitHub Release 頁面:在 Releases · opencv/opencv · GitHub 找到你需要的版本,然后在下載的壓縮包中找到位于 opencv\data 目錄下的人臉檢測器模型文件。
??????? OpenCV 官方網(wǎng)站下載頁面:訪問 OpenCV 官方網(wǎng)站 Releases - OpenCV ,下載你需要的版本,并在相應的壓縮包中查找人臉檢測器模型文件。

請確保下載與你使用的OpenCV版本兼容的模型文件。

二、簡單行人人體檢測效果實現(xiàn)原理

行人檢測是計算機視覺中的一個重要任務,旨在從圖像或視頻中檢測和定位人類行人的位置。這項任務通常涉及以下步驟:

  1. 特征提取:通常使用特征提取算法,如 Haar 特征、HOG(方向梯度直方圖)特征或深度學習模型,從圖像中提取用于識別行人的特征。

  2. 分類器訓練:使用機器學習技術(shù)(如支持向量機、隨機森林等)或深度學習模型,對提取的特征進行訓練,以區(qū)分行人和非行人的圖像。

  3. 行人檢測:將訓練好的分類器應用于輸入圖像或視頻流,以識別其中的行人。在此階段,通常會使用滑動窗口技術(shù)在圖像中不同的位置和尺度上進行檢測。

  4. 定位和標注:一旦檢測到行人,通常會在圖像上繪制矩形框或邊界框來標記他們的位置。

  5. 性能評估:對行人檢測算法進行評估和性能分析,以確定其在不同數(shù)據(jù)集上的準確性和魯棒性。

行人檢測在許多領域都有重要應用,包括智能監(jiān)控系統(tǒng)、自動駕駛汽車、人機交互、無人機和機器人導航等。

實現(xiàn)原理:

  1. 使用 OpenCV 加載行人檢測器,這里使用的是 Haar 級聯(lián)分類器。
  2. 讀取視頻文件的每一幀,并將每一幀轉(zhuǎn)換為灰度圖像。
  3. 在灰度圖像中使用行人檢測器檢測行人的位置。
  4. 對于檢測到的每個行人,繪制一個矩形框來標記其位置。
  5. 將帶有矩形框的圖像顯示出來,直到按下 'q' 鍵退出。

實現(xiàn)方法:

  1. 加載 Haar 級聯(lián)分類器用于行人檢測。
  2. 使用 VideoCapture 對象從給定的視頻文件中讀取幀。
  3. 將每一幀轉(zhuǎn)換為灰度圖像,并使用 detectMultiScale 函數(shù)檢測行人。
  4. 對于每個檢測到的行人,使用 rectangle 函數(shù)繪制一個矩形框。
  5. 循環(huán)遍歷直到視頻結(jié)束或者按下 'q' 鍵退出,然后釋放資源。

涉及的一些函數(shù)說明,如下

  1. cv2.CascadeClassifier

    • 作用:加載 Haar 級聯(lián)分類器,用于行人檢測。
    • 參數(shù):
      • filename(str):級聯(lián)分類器的文件路徑。
    • 返回值:cv2.CascadeClassifier 對象。
  2. cv2.VideoCapture

    • 作用:創(chuàng)建一個視頻捕獲對象,用于從給定的視頻文件中讀取幀。
    • 參數(shù):
      • filename(str):要讀取的視頻文件的路徑。
    • 返回值:cv2.VideoCapture 對象。
  3. cv2.cvtColor

    • 作用:將圖像從一種顏色空間轉(zhuǎn)換為另一種顏色空間。
    • 參數(shù):
      • src(numpy.ndarray):輸入圖像。
      • code(int):顏色空間轉(zhuǎn)換代碼,如 cv2.COLOR_BGR2GRAY 表示從 BGR(彩色)到灰度的轉(zhuǎn)換。
    • 返回值:轉(zhuǎn)換后的圖像。
  4. detectMultiScale

    • 作用:在圖像中檢測對象的多個實例,例如人臉或行人。
    • 參數(shù):
      • image(numpy.ndarray):輸入圖像,灰度圖像通常用于人臉或行人檢測。
      • scaleFactor(float):每個圖像縮小的比例尺寸。
      • minNeighbors(int):每個候選矩形應該保留多少個鄰居。
      • minSize(tuple):對象的最小尺寸。
    • 返回值:檢測到的對象的矩形列表。
  5. cv2.rectangle

    • 作用:在圖像上繪制矩形。
    • 參數(shù):
      • img(numpy.ndarray):輸入圖像。
      • pt1(tuple):矩形的一個頂點。
      • pt2(tuple):矩形對角線上的另一個頂點。
      • color(tuple 或 int):矩形的顏色,可以是 RGB 顏色元組或灰度值。
      • thickness(int):矩形邊框的厚度。
    • 返回值:修改后的圖像。
  6. cv2.imshow

    • 作用:在窗口中顯示圖像。
    • 參數(shù):
      • winname(str):窗口名稱。
      • mat(numpy.ndarray):要顯示的圖像。
    • 返回值:無。
  7. cv2.waitKey

    • 作用:等待鍵盤輸入。
    • 參數(shù):
      • delay(int):等待時間,單位為毫秒。
    • 返回值:按下的鍵的 ASCII 碼。
  8. cv2.destroyAllWindows

    • 作用:關閉所有 OpenCV 窗口。
    • 參數(shù):無。
    • 返回值:無。
  9. VideoCapture.release

    • 作用:釋放視頻捕獲對象的資源。
    • 參數(shù):無。
    • 返回值:無。

三、簡單行人人體檢測效果案例實現(xiàn)簡單步驟

1、編寫代碼

Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之四 簡單行人人體檢測效果,Python OpenCV 實戰(zhàn)案例-圖片/視頻/人臉等使用,python,opencv,圖像處理,人體檢測,視頻處理

2、運行效果

Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之四 簡單行人人體檢測效果,Python OpenCV 實戰(zhàn)案例-圖片/視頻/人臉等使用,python,opencv,圖像處理,人體檢測,視頻處理

3、具體代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-859077.html

"""
簡單行人人體檢測效果
    1、加載 Haar 級聯(lián)分類器用于行人檢測。
    2、使用 VideoCapture 對象從給定的視頻文件中讀取幀。
    3、將每一幀轉(zhuǎn)換為灰度圖像,并使用 detectMultiScale 函數(shù)檢測行人。
    4、對于每個檢測到的行人,使用 rectangle 函數(shù)繪制一個矩形框。
    5、循環(huán)遍歷直到視頻結(jié)束或者按下 'q' 鍵退出,然后釋放資源。
"""

import cv2


def detect_and_draw_pedestrians(video_path, scale_factor=1.1, min_neighbors=5, min_size=(30, 30)):
    """
    檢測視頻中的行人并繪制矩形框
    :param video_path: (str) 輸入視頻文件的路徑
    :param scale_factor: (float) 檢測窗口的縮放比例,默認為1.1
    :param min_neighbors: (int) 每個候選矩形應該保留的鄰近矩形的數(shù)量閾值,默認為5
    :param min_size: (tuple) 行人矩形的最小尺寸,格式為(w, h),默認為(30, 30)
    :return: 
    """
    # 參數(shù)安全校驗
    if not isinstance(video_path, str) or not video_path.strip():
        raise ValueError("Invalid video path.")
    if not isinstance(scale_factor, (int, float)) or scale_factor <= 1.0:
        raise ValueError("Scale factor must be a positive float greater than 1.0.")
    if not isinstance(min_neighbors, int) or min_neighbors < 0:
        raise ValueError("Min neighbors must be a non-negative integer.")
    if not isinstance(min_size, tuple) or len(min_size) != 2 or not all(isinstance(val, int) for val in min_size) or \
            min_size[0] <= 0 or min_size[1] <= 0:
        raise ValueError("Min size must be a tuple of two positive integers.")

    # 加載行人檢測器
    pedestrian_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_fullbody.xml')

    # 讀取視頻文件
    video_capture = cv2.VideoCapture(video_path)

    while True:
        # 讀取一幀視頻
        ret, frame = video_capture.read()

        if not ret:
            break

        # 將圖像轉(zhuǎn)換為灰度圖像
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        # 檢測行人
        pedestrians = pedestrian_cascade.detectMultiScale(gray, scaleFactor=scale_factor, minNeighbors=min_neighbors,
                                                          minSize=min_size)

        # 繪制矩形框
        for (x, y, w, h) in pedestrians:
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

        # 顯示結(jié)果
        cv2.imshow('Pedestrian Detection', frame)

        # 按 'q' 鍵退出循環(huán)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    # 釋放視頻捕獲對象
    video_capture.release()
    cv2.destroyAllWindows()


# 測試接口函數(shù)
if __name__ == "__main__":
    video_path = 'Videos/TwoPeopleRunning.mp4'
    detect_and_draw_pedestrians(video_path, scale_factor=1.2, min_neighbors=3, min_size=(50, 50))

四、注意事項

  1. 確保提供的視頻文件路徑是正確的,視頻文件存在并且格式正確。
  2. 適當調(diào)整 detectMultiScale 函數(shù)的參數(shù)以達到最佳的行人檢測效果。
  3. 處理視頻時可能會遇到視頻幀的分辨率、幀率等問題,需要考慮處理效率。
  4. 為了提高檢測效率,可以在視頻的每幾幀上進行行人檢測,而不是每一幀都進行檢測。
  5. 釋放視頻捕獲對象和關閉窗口的代碼應該在所有幀都處理完畢后執(zhí)行,以避免資源泄露。

到了這里,關于Python 基于 OpenCV 視覺圖像處理實戰(zhàn) 之 OpenCV 簡單人臉檢測/識別實戰(zhàn)案例 之四 簡單行人人體檢測效果的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包