OpenCV 실천 의 길 - 얼굴 인식 중 하나 인 데이터 수집 과 예비 처리

본 고 는 @ 성 침 각 얼음 에서 나 온 것 이 니 작가 와 출처 를 밝 혀 주 십시오.
글 링크:http://blog.csdn.net/xingchenbingbuyu/article/details/51386949
웨 이 보:http://weibo.com/xingchenbing 
얼마 전에 얼굴 검사 와 얼굴 표 시 를 시 도 했 습 니 다. 얼굴 검사 (C + + / python) 와 Dlib 라 이브 러 리 로 얼굴 검사 와 얼굴 표 시 를 했 습 니 다.그러나 검 측 과 식별 은 다르다. 검 측 이 해결 하 는 문 제 는 사진 에 얼굴 이 있 는 지 없 는 지 하 는 것 이다.식별 이 해결 하 는 문 제 는 한 장의 그림 에 얼굴 이 있 으 면 누구의 얼굴 이 냐 는 것 이다.얼굴 검 사 는 opencv 자체 의 분류 기 를 이용 할 수 있 지만 얼굴 인식 은 스스로 데 이 터 를 수집 하고 분류 기 를 훈련 해 야 한다.opencv 가 제시 한 얼굴 인식 튜 토리 얼: Face Recognition with OpenCV.인터넷 에서 도 중국어 버 전 을 찾 을 수 있다.
자기 손 으로 먹고 입 는 것 이 넉넉 하 다 는 것 이다.거인 의 어깨 위 에 서서 선배 들 의 경험 을 참고 해 마침내 자신 을 식별 할 수 있 게 됐다.내용 이 많은 것 같 고 한꺼번에 쓸 시간 이 없어 단계별 로 쓰 려 고 한다.모든 블 로 그 는 한 단계 의 일이 다.초보적인 구상 은 데이터 수집 과 예비 처리, 훈련 모델 과 얼굴 인식 세 부분 으로 나 뉜 다.오늘 은 첫 부분 부터 쓰 겠 습 니 다.
배경 데이터 세트
이번 데이터 시장 opencv 에서 제공 한 튜 토리 얼 의 첫 번 째 데이터 세트: The AT & T Facedebase.일명 ORL 얼굴 데이터베이스, 40 명, 1 인당 10 장의 사진.사진 은 시간, 빛, 표정 (눈 을 뜨 고 눈 을 감 거나 웃 거나 웃 지 않 음), 얼굴 디 테 일 (안경 을 쓰 거나 안경 을 쓰 지 않 음) 에 따라 채취 됐다.모든 그림 은 어 둡 고 균일 한 배경 에서 채집 되 었 으 며, 정면 은 사람의 얼굴 을 곧 게 세 웠 다.
다운로드 가 내 려 오 면 다음 과 같 습 니 다.
OpenCV实践之路——人脸识别之一数据收集和预处理_第1张图片
OpenCV实践之路——人脸识别之一数据收集和预处理_第2张图片
폴 더 마다 한 개의 폴 더 를 볼 수 있 습 니 다. 폴 더 마다 이 사람의 10 장의 사진 이지 만 우리 가 잘 아 는 BMP 나 PNG 또는 JPEG 형식 이 아니 라 PGM 형식 입 니 다.windows 7 자체 사진 뷰 어 와 그래 픽 소프트웨어 는 이런 형식의 그림 을 열 수 없다.다행히 나 는 어제 imread () 함수 에 대해 연 구 를 한 적 이 있다. imread () 함수 로 그림 을 읽 는 여섯 가지 정확 한 자 세 를 사용 했다.그래서 opencv 문서 에 이런 설명 이 있 었 던 것 을 기억 합 니 다.
OpenCV实践之路——人脸识别之一数据收集和预处理_第3张图片
imread () 는 여전히 강하 기 때문에 프로그램 을 써 서 이 사람들 이 어떤 지 보 세 요.
OpenCV实践之路——人脸识别之一数据收集和预处理_第4张图片
2. 자신의 얼굴 데이터 세트
1. 포 토 프로그램
자신 을 식별 하려 면 다른 사람의 데이터 세트 만 있어 서 는 안 되 고 자신의 얼굴 사진 이 필요 하 다.이것 은 우리 가 자신의 사진 을 수집 한 후에 위의 데이터 세트 와 함께 훈련 모델 을 만들어 야 한다.휴대 전 화 를 들 고 셀 카 를 찍 는 과정 에서 프로그램 을 쓰 지 않 고 컴퓨터 카메라 로 셀 카 를 찍 느 냐 고 물 어보 면 opencv 로 어떻게 사진 을 찍 는 지 연구 할 수 있 을 것 이 라 고 생각 했다.한 차례 의 실험 을 거 쳐 마침내 사진 촬영 프로그램 을 썼 다.
프로그램의 기능 은 컴퓨터 카 메 라 를 켜 고 P 키 를 눌 렀 을 때 (P 는 사진 의 이니셜 입 니까? 아니면 Photo 의 이니셜 입 니까? Picture 의 이니셜 입 니까?) 현재 프레임 의 그림 을 저장 하 는 것 입 니 다.친구 가 없 을 정도 로 간단 하 다.
while (1)
		{
			char key = waitKey(100);
			cap >> frame;
			imshow("frame", frame);
			string filename = format("D:\\pic\\pic%d.jpg", i);

			switch (key)
			{
			case'p':
				i++;
				imwrite(filename, frame);
				imshow("photo", frame);
				waitKey(500);
				destroyWindow("photo");
				break;
			default:
				break;
			}
		}
</pre><p></p><pre>

그런 후에 우 리 는 프로그램 을 실행 할 수 있 고 끊임없이 p 키 를 눌 러 자신 에 게 미 친 듯 이 찍 을 수 있다.
2. 전처리
자신의 얼굴 사진 을 받 은 뒤 이 사진 들 을 미리 처리 해 야 훈련 모형 을 가 져 갈 수 있다.예 처리 란 사람의 얼굴 을 검출 하고 분할 하 며 사람의 얼굴 크기 를 바 꾸 는 것 이 다운로드 한 데이터 집중 이미지 크기 와 일치한다.
얼굴 검 사 는 이전 블 로그 에 소 개 됐 으 니 더 이상 군말 하지 않 겠 다.자세 한 내용 은 OpenCV 실천 의 길 - 얼굴 검사 (C + + / python) 입 니 다. ROI 로 분할 하면 됩 니 다.
얼굴 이 검출 된 후 크기 를 바 꾸 어 ORL 얼굴 데이터베이스 와 얼굴 크기 를 일치 시 킵 니 다. 정지점 을 추가 하여 Locals 나 ImageWatch 를 통 해 ORL 얼굴 데이터베이스 얼굴의 크기 는 92 x 112 입 니 다.
OpenCV实践之路——人脸识别之一数据收集和预处理_第5张图片
OpenCV实践之路——人脸识别之一数据收集和预处理_第6张图片
여기 서 는 검사 후 얻 은 ROI 에 대해 한 번 만 resize 를 하면 된다.
이 두 단계 의 코드 는 다음 과 같다.
			std::vector<Rect> faces;
			Mat img_gray;

			cvtColor(img, img_gray, COLOR_BGR2GRAY);
			equalizeHist(img_gray, img_gray);

			//-- Detect faces
			face_cascade.detectMultiScale(img_gray, faces, 1.1, 3, CV_HAAR_DO_ROUGH_SEARCH, Size(50, 50));

			for (size_t j = 0; j < faces.size(); j++)
			{
				Mat faceROI = img(faces[j]);
				Mat MyFace;
				if (faceROI.cols > 100)
				{
					resize(faceROI, MyFace, Size(92, 112));
					string  str = format("D:\\MyFaces\\MyFcae%d.jpg", i);
					imwrite(str, MyFace);
					imshow("ii", MyFace);
				}
				waitKey(10);
			}

이로써 우 리 는 ORL 얼굴 데이터베이스 의 얼굴 크기 와 일치 하 는 자신의 얼굴 데이터 세트 를 얻 게 되 었 습 니 다. 그리고 우 리 는 자신의 얼굴 을 41 번 째 사람 으로 하여 우리 가 다운로드 한 사람의 얼굴 폴 더 아래 에 s41 의 하위 폴 더 를 만들어 자신의 얼굴 데 이 터 를 넣 었 습 니 다. 이렇게 되 었 습 니 다. 마지막 폴 더 안 에는 나의 프로필 사진 이 들 어 있 습 니 다.
4. 567915. 마지막 으로 그 at. txt 는 다음 에 다시 말 하면 훈련 모델 은 그것 에 달 려 있다.
여기 서 주의 할 점 이 있 습 니 다. 제 가 저장 한 이미지 형식 은 *. jpg 입 니 다. 원본 데이터 세트 와 마찬가지 로 *. pgm 입 니 다. 테스트 를 통 해 제 얼굴 을 정확하게 식별 할 수 있 는 모델 을 훈련 할 수 있 습 니 다. 하지만 크기 가 일치 하지 않 으 면 잘못 보 고 될 수 있 습 니 다.
그 다음 내용 은 다음 기록 에 넣 으 세 요.

좋은 웹페이지 즐겨찾기