반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

폴크(FOLC)

머신 비전 알고리즘 - OpenCV - 이미지처리33 본문

머신 비전/머신 비전 알고리즘 테크닉 CPP

머신 비전 알고리즘 - OpenCV - 이미지처리33

folcjin 2021. 8. 24. 22:23
728x90
반응형

# 디지털 이미지 처리
   # 이미지의 상태 정보에서 특별한 영역을 추출한다.
      > haarcascade 로 처리

# 이미지 처리 - OpenCV 4.5.3 으로 테스트
   # 이미지의 상태 정보에서 특별한 영역을 추출
   > srcImage : 입력, dstImage : 결과, faces, eyes: 결과 정보

# cv::CascadeClassifier
   > cv::String face_cascade_name = "haarcascades\\haarcascade_frontalface_alt.xml";
   > cv::String eyes_cascade_name = "haarcascades\\haarcascade_eye_tree_eyeglasses.xml";
   > cv::CascadeClassifier face_cascade;
   > cv::CascadeClassifier eyes_cascade;
   > bool ret1 = face_cascade.load(face_cascade_name);
   > bool ret2 = eyes_cascade.load(eyes_cascade_name);
   > cv::cvtColor(m_matSrcImage, m_matTmpImage, cv::COLOR_BGR2GRAY);
   > cv::equalizeHist(m_matTmpImage, m_matTmpImage);
   > std::vector<cv::Rect> faces;
   > face_cascade.detectMultiScale(m_matTmpImage, faces);
   > for (size_t i = 0; i < faces.size(); i++)
   > {
   > cv::Point center(faces[i].x + faces[i].width / 2, faces[i].y + faces[i].height / 2);
   > cv::Size size = cv::Size(faces[i].width / 2, faces[i].height / 2);
   > cv::ellipse(m_matDstImage, center, size, 0, 0, 360, cv::Scalar(255, 0, 255), 4, 8, 0);
   > cv::Mat faceROI;
   > m_matTmpImage(faces[i]).copyTo(faceROI);
   > std::vector<cv::Rect> eyes;
   > eyes_cascade.detectMultiScale(faceROI, eyes);
   > for (size_t j = 0; j < eyes.size(); j++)
   > {
   > cv::Point center(faces[i].x + eyes[j].x + eyes[j].width / 2, faces[i].y + eyes[j].y + eyes[j].height / 2);
   > int radius = cvRound((eyes[j].width + eyes[j].height) / 4);
   > cv::circle(m_matDstImage, center, radius, cv::Scalar(255, 0, 0), 4, 8, 0);
   > }
   > }

728x90
반응형
사업자 정보 표시
사업자 등록번호 : -- | TEL : --