OpenCV人臉識別(正臉、左右側臉)----GPU版使用
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/gpu/gpu.hpp> #include<iostream> #include<time.h> using namespace std; using namespace cv; string front_face_cascade_name = "../haarcascades_GPU/haarcascade_frontalface_alt2.xml";//正臉 string left_face_cascade_name = "../haarcascades_GPU/haarcascade_profileface.xml";//左臉 gpu::CascadeClassifier_GPU front_face_cascade; gpu::CascadeClassifier_GPU left_face_cascade; int main() { Mat img; if (!front_face_cascade.load(front_face_cascade_name)){ cout << "cascade load error" << endl; return -1; } if (!left_face_cascade.load(left_face_cascade_name)){ cout << "cascade load error" << endl; return -1; } gpu::GpuMat GpuGray, GpuObj; VideoCapture cap(1); while (cap.isOpened()){ cap >> img; gpu::GpuMat GpuImg; GpuImg.upload(img); clock_t start = clock(); gpu::cvtColor(GpuImg, GpuGray, CV_BGR2GRAY); gpu::equalizeHist(GpuGray, GpuGray); gpu::GpuMat GpuGrayRight;//右臉 gpu::flip(GpuGray, GpuGrayRight, 1); Mat obj_host;// 把儲存在GpuMat中的Rect存到Cpu Mat中 //區別於CPU版,返回的人臉檢測區域Rect儲存在GpuMat中 //正臉 int detections_number_front = front_face_cascade.detectMultiScale(GpuGray, GpuObj); // download only detected number of rectangles GpuObj.colRange(0, detections_number_front).download(obj_host); Rect* faces = obj_host.ptr<Rect>(); //這裡就比較清楚了,利用ptr,每次讀一個Rect,共detections_number個檢測區域 for (int i = 0; i < detections_number_front; ++i) cv::rectangle(img, faces[i], Scalar(255),3); //左臉 int detections_number_feft = left_face_cascade.detectMultiScale(GpuGray, GpuObj); // download only detected number of rectangles GpuObj.colRange(0, detections_number_feft).download(obj_host); faces = obj_host.ptr<Rect>(); for (int i = 0; i < detections_number_feft; ++i) cv::rectangle(img, faces[i], Scalar(0,0,255), 3); //右臉 int detections_number_right = left_face_cascade.detectMultiScale(GpuGrayRight, GpuObj); // download only detected number of rectangles GpuObj.colRange(0, detections_number_right).download(obj_host); faces = obj_host.ptr<Rect>(); for (int i = 0; i < detections_number_right; ++i) cv::rectangle(img, Rect(img.cols - faces[i].x - faces[i].width, faces[i].y, faces[i].width, faces[i].height), Scalar(0, 255, 0), 3); clock_t end = clock(); double duration = (end - start) / CLOCKS_PER_SEC; cout << "一幀耗時:" << duration << endl; imshow("Faces", img); char ch = waitKey(33); if (ch == 'q') break; } }
效果如下,完全的側臉還是檢測不到。
相關推薦
OpenCV人臉識別(正臉、左右側臉)----GPU版使用
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/gpu/gpu.hpp> #include<
人臉識別(稀疏表示、人工神經網路)
1. 稀疏表示 對於一個訊號 x,如果 x 中大部分的元素都為 0,只有少部分元素不為0,則稱訊號 x 為稀疏的。或者 x 中大部分元素都為較小值,接近於 0,只有少部分元素為較大值,也可以稱訊號 x 為稀疏的(例如,影象傅立葉變換之後,或者小波變換之後)。
基於Python3.7和opencv的人臉識別(含資料收集,模型訓練)
前言 第一次寫部落格,有點緊張和興奮。廢話不多說,直接進入正題。如果你渴望使你的電腦能夠進行人臉識別;如果你不想了解什麼c++、底層演算法;如果你也不想買什麼樹莓派,安裝什麼幾個G的opencv;如果你和我一樣是個還沒入門的小白,但是想體驗一下人臉識別的魅力。那麼恭喜你,這篇文章就是為你準備的。讓我們開始吧
java實現opencv人臉識別(二)
Java下使用opencv進行人臉檢測 工作需要,研究下人臉識別,發現opencv比較常用,儘管能檢測人臉,但識別率不高,多數是用來獲取攝像頭的視訊流的,提取裡面的視訊幀,實現人臉識別時通常會和其他框架搭配使用,比如face_recognition、SeetaFace En
【2018.12.24】python3.7+OpenCV 人臉識別(圖片+攝像頭)
一、識別影象中的人臉個數。註釋寫的很好(\(^o^)/恩) #!/practice/Study_Test python # -*- coding: utf-8 -*- # @Time : 2018/12/23 21:19 # @Author : yb.w # @File : ima
opencv 人臉識別 (一)訓練樣本的處理
本文實現基於eigenface的人臉檢測與識別。給定一個影象資料庫,進行以下步驟:進行人臉檢測,將檢測出的人臉存入資料庫2對資料庫2進行人臉建模在測試集上進行recognition本篇實現第一步:進行人臉檢測,將檢測出的人臉存入資料庫2環境:vs2010+opencv 2.4
opencv 人臉識別 (二)訓練和識別
上一篇中我們對訓練資料做了一些預處理,檢測出人臉並儲存在\pic\color\x資料夾下(x=1,2,3,...類別號),本文做訓練和識別。為了識別,首先將人臉訓練資料 轉為灰度、對齊、歸一化,再放入分類器(EigenFaceRecognizer),最後用訓練出的model進
性能測試五:jmeter進階之後置處理器(正則、json提取器)
性能測試 post 提取 bubuko 測試 sample 通過 ima 圖片 如,從get返回的json中提取stock的值 作為post的請求參數 1、JSON提取器 專門對json數據進行提取的後置處理器 Debug Sampler:記錄之前的
效能測試五:jmeter進階之後置處理器(正則、json提取器)
如,從get返回的json中提取stock的值 作為post的請求引數 1、JSON提取器 專門對json資料進行提取的後置處理器 Debug Sampler:記錄之前的請求的所有引數及資料 &n
OpenCV人臉識別實驗(一)——特徵臉(Eigenfaces)及其重構的原始碼詳解
1、介紹Introduction 從OpenCV2.4開始,加入了新的類FaceRecognizer,我們可以使用它便捷地進行人臉識別實驗。 本實驗採用的程式設計環境為:opencv3.0+VS2013。人臉識別的實驗已經轉移到face模組中, face模組在我這裡的路徑為
利用python、tensorflow、opencv實現人臉識別(包會)!
一,前言 本人是機械專業在讀碩士,在完成暑假實踐的時候接觸到了人臉識別,對這一實現很感興趣,所以花了大概十天時間做出了自己的人臉識別。這篇文章應該是很詳細的了所以幫你實現人臉識別應該沒什麼問題。 先說本博文的最終要達到的效果:通過一系列操作,在攝像頭的視訊流中識別特定
OpenCV——人臉識別模型訓練(2)
在之前的部落格OpenCV——人臉識別資料處理(1)之中,已經下載了ORL人臉資料庫,並且為了識別自己的人臉寫了一個拍照程式自拍。之後對拍的照片進行人臉識別和提取,最後我們得到了一個包含自己的人臉照片的資料夾s41。在部落格的最後我們提到了一個非常重要的檔案——
openCV人臉識別三種演算法實現(官網翻譯)
怎樣使用OpenCV進行人臉識別 友情提示,要看懂程式碼前,你得先知道OpenCV的安裝和配置,會用C++,用過一些OpenCV函式。基本的影象處理和矩陣知識也是需要的。[gm:我是簫鳴的註釋]由於我僅僅是翻譯,對於六級才過的我,肯定有一些翻譯錯的或
OpenCV人臉識別的原理 (原文完整版)
http://www.educity.cn/wenda/358439.html “人臉識別”是一個在計算機視覺和生物特徵識別領域十分活躍的話題。這個主題已經被給力地研究了25年,並且最終在安全、機器人學、人機互動、數碼攝像機、遊戲和娛樂領域得到了廣泛應用。 “人臉
人臉識別(初學篇)-VS2015+opencv3.2的配置
logs 點擊 環境變量 安裝 details 接下來 安裝包 png 應該 初學人臉識別,感覺安裝也是一個很大的麻煩。 寫在這裏記錄一下吧 一:先安裝好我們需要的軟件 首先安裝Vs2015,在官網或者csdn搜一下應該找的到。 安裝步驟沒有太多講究。 點擊exe文件,
2018-06-04筆記(正則、grep、sed、awk工具)
linux9.1 正則介紹 正則表達式,又稱規則表達式,計算機科學的一個概念,正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯,在很多文本編輯器或其他工具裏,正則表達式通常被用來檢索和/或替換
OpenCV人臉識別
com show wait window alt imp bsp src import import cv2 filename = ‘pic.jpg‘ def detect(filename): face_cascade = cv2.Cascade
一、OpenCV環境搭建(採用官方已經編譯好的)
一、下載OpenCV安裝包: 到OpenCV的官網(http://opencv.org/)下載最新版本的OpenCV安裝包,由於OpenCV針對不同平臺都有安裝程式,所以我們只需要根據當前開發環境選擇合適的平臺版本即可,這裡我們是在win7 64bit作業系統下進行開發,所以應該下載Open
深度學習(一)——deepNN模型實現攝像頭實時識別人臉表情(C++和python3.6混合程式設計)
一、背景介紹 最近需要做人臉識別方向的東西,就被分配了新的任務,利用攝像頭實時檢測人臉表情,並製作成一個小軟體,這裡當然要用C++實現,並用C++做成一個介面。 由於博主之前用python做過類似的小程式,因此這裡的模型實現主要採用了python,為了用C++實現介面,這裡採用C++呼叫py
送你9個常用的人臉資料庫(附連結、報告)
本文主要介紹以下幾種常用的人臉資料庫: 1. FERET人臉資料庫 http://www.nist.gov/itl/iad/ig/colorferet.cfm 由FERET專案建立,此影象集包含大量的人臉影象,並且每幅圖中均只有一個人臉。該集中,同一個人的照片有不同表情、光照、姿態和年齡的變化。包含1萬