개발자/라즈베리파이4

라즈베리파이4 opencv 얼굴인식 예제 실습

지구빵집 2022. 6. 15. 19:45
반응형

 

 

영상 처리에 필수적으로 사용되는 라이브러리 OpenCV  

 

OpenCV (Open Source Computer Vision)에 대하여 간단하게 말씀드리면 인텔에서 제공하는 다양한 영상 처리에 사용할 수 있는 오픈소스 라이브러리입니다. 무려 상업용으로도 사용 가능합니다. C, C++, Java, Python과 같은 다양한 언어를 지원하며 요즘엔 간단한 딥러닝 알고리즘들도 제공하고 있습니다. 

앞서 opencv를 설치하였습니다. 버전은 4.6.0 임을 확인했습니다. 혹시 설치하지 못하셨다면 아래 두 개의 포스팅을 확인하시기 바랍니다.

 

Raspberry pi에 OpenCV 가장 빠르게 설치하는 방법 

 

Raspberry pi에 OpenCV 가장 빠르게 설치하는 방법

Raspberry pi4 에 OpenCV 가장 빠르게 설치하는 방법 영상 처리에 필수적으로 사용되는 라이브러리 OpenCV OpenCV (Open Source Computer Vision)에 대하여 간단하게 말씀드리면 인텔에서 제공하는 다양한 영상 처

fishpoint.tistory.com

 

라즈베리파이4 opencv 컴파일 설치 방법  

 

라즈베리파이4 opencv 컴파일 설치 방법

잘 될 때까지 한다. 그게 진짜 행동하는 사람과 흉내만 내는 사람과 다른 점이다. 오늘 운동 했다면 내일도 하고, 일주일 뒤에도 하고, 한 달 뒤에도 하고, 내년에도 한다. 행동은 그런 것이다. 가

fishpoint.tistory.com

 

 

본 포스팅에서는 기본 예제 코드를 실행하여 정상 작동되는지를 확인해보겠습니다. 이미지 속 얼굴을 인식하여 얼굴과 눈을 표시해주는 기본 프로그램을 실행해보겠습니다. 기본 샘플 예제코드들은 /home/pi/opencv/samples/python 디렉토리에 있습니다.  

 

pi@raspberrypi:~/opencv/samples/python $ ls
CMakeLists.txt                         houghlines.py
_coverage.py                           inpaint.py
_doc.py                                kalman.py
_run_winpack_demo.cmd                  kmeans.py
asift.py                               laplace.py
audio_spectrogram.py                   lappyr.py
browse.py                              letter_recog.py
calibrate.py                           lk_homography.py
camera_calibration_show_extrinsics.py  lk_track.py
camshift.py                            logpolar.py
coherence.py                           morphology.py
color_histogram.py                     mosse.py
common.py                              mouse_and_match.py
common.pyc                             mser.py
contours.py                            opencv_version.py
deconvolution.py                       opt_flow.py
demo.py                                peopledetect.py
dft.py                                 plane_ar.py
digits.py                              plane_tracker.py
digits_adjust.py                       qrcode.py
digits_video.py                        squares.py
dis_opt_flow.py                        stereo_match.py
distrans.py                            stitching.py
drawing.py                             stitching_detailed.py
edge.py                                text_skewness_correction.py
essential_mat_reconstr.py              texture_flow.py
facedetect.py                          tracker.py
feature_homography.py                  tst_scene_render.py
find_obj.py                            tst_scene_render.pyc
fitline.py                             turing.py
floodfill.py                           tutorial_code
gabor_threads.py                       video.py
gaussian_mix.py                        video.pyc
grabcut.py                             video_threaded.py
hist.py                                video_v4l2.py
houghcircles.py                        watershed.py
pi@raspberrypi:~/opencv/samples/python $

 

상당히 많은 예제코드가 있음을 알 수 있습니다. 예제에 사용되는 이미지 샘플은 아래 디렉토리에 저장되어있습니다. /home/pi/opencv/samples/data

 

pi@raspberrypi:~/opencv/samples/python $ cd /home/pi/opencv/samples/data
pi@raspberrypi:~/opencv/samples/data $
pi@raspberrypi:~/opencv/samples/data $
pi@raspberrypi:~/opencv/samples/data $ ls
Blender_Suzanne1.jpg  essential_mat_data.txt   orange.jpg
Blender_Suzanne2.jpg  fruits.jpg               pca_test1.jpg
H1to3p.xml            gradient.png             pic1.png
HappyFish.jpg         graf1.png                pic2.png
LinuxLogo.jpg         graf3.png                pic3.png
Megamind.avi          home.jpg                 pic4.png
Megamind_bugy.avi     imageTextN.png           pic5.png
WindowsLogo.jpg       imageTextR.png           pic6.png
aero1.jpg             intrinsics.yml           right.jpg
aero3.jpg             left.jpg                 right01.jpg
aloeGT.png            left01.jpg               right02.jpg
aloeL.jpg             left02.jpg               right03.jpg
aloeR.jpg             left03.jpg               right04.jpg
alphabet_36.txt       left04.jpg               right05.jpg
alphabet_94.txt       left05.jpg               right06.jpg
apple.jpg             left06.jpg               right07.jpg
baboon.jpg            left07.jpg               right08.jpg
basketball1.png       left08.jpg               right09.jpg
basketball2.png       left09.jpg               right11.jpg
blox.jpg              left11.jpg               right12.jpg
board.jpg             left12.jpg               right13.jpg
box.png               left13.jpg               right14.jpg
box_in_scene.png      left14.jpg               rubberwhale1.png
building.jpg          left_intrinsics.yml      rubberwhale2.png
butterfly.jpg         lena.jpg                 smarties.png
calibration.yml       lena_tmpl.jpg            squirrel_cls.jpg
cards.png             letter-recognition.data  starry_night.jpg
chessboard.png        leuvenA.jpg              stereo_calib.xml
chicky_512.png        leuvenB.jpg              stuff.jpg
data01.xml            licenseplate_motion.jpg  sudoku.png
detect_blob.png       mask.png                 templ.png
digits.png            messi5.jpg               text_defocus.jpg
dnn                   ml.png                   text_motion.jpg
ela_modified.jpg      notes.png                tmpl.png
ela_original.jpg      opencv-logo-white.png    tree.avi
ellipses.jpg          opencv-logo.png          vtest.avi
pi@raspberrypi:~/opencv/samples/data $

 

또한 각 샘플 코드에서 사용할 xml 파일들은 /home/pi/opencv/data/haarcascades 디렉토리에 존재하는데, xml파일은 인공지능 분석을 위한 데이터로 사용됩니다. 이 데이터를 기반으로 눈과 귀를 인식하여 표시해주게됩니다. 

 

이제 아래 명령어로 작업디렉토리를 옮긴 뒤 facedetect.py를 실행합니다.

 

cd opencv/samples/python 

python facedetect.py

 

아래와 같이 이미지파일에 유명한 아름다운 이미지와 미인의 얼굴과 눈이 사각형으로 표시되어 출력됨을 알 수 있습니다. 아주 기가 막힙니다. 고생하셨습니다. ^^

 

 

레나 (Lenna 또는 Lena)

 

 

* 참고 이미지 설명

 

레나(Lenna 또는 Lena)는 플레이보이 잡지 1972년 11월자의 센터폴드에 실린 스웨덴의 모델인 레나 포르센(1951년 3월 31일 - )의 사진의 일부분을 말한다.

 

얼굴과 어깨만 취한 이 그림 파일은 모든 종류의 영상 처리 알고리즘(영상 압축, 영상 노이즈 제거 등)과 관련 과학적 출판물에서 시험용 이미지로 가장 널리 쓰인다. 실제로 대부분의 영상 처리, 신호 처리 교과서에는 레나의 사진을 이용한 결과 비교가 나온다. 일부에서는 이 사진이 외설스러운 것이며, 한때 플레이보이가 이 사진을 사용하는데 저작권을 행사하려 한 적이 있다며 반감을 가지기도 한다. 실제로 플레이보이는 저작권 소송을 하려 했었지만 뒤에 이를 철회했다.

 

1996년 1월판 IEEE Transactions on Image Processing의 편집장이던 David C. Munson은 레나 사진을 영상처리에 널리 사용하는 이유에 대해 다음과 같이 밝혔다.

 

먼저, 레나 이미지는 세밀함과 평면, 그림자, 그리고 질감이 적절하게 조화되어 있어서 다양한 이미지 처리 알고리즘을 처리하는 데 좋다. 이 이미지는 정말 좋은 시험용 이미지이다. 둘째로, 레나 이미지는 매력적인 여성의 사진이다. 그러므로 이미지 처리 연구 분야 종사자들이 매력적이라고 느끼는 이미지에 끌리는 것은 대다수가 남자이기 때문에, 별로 놀라울 게 없다.

 

사진의 실제 주인공인 레나 포르센은 1997년 이미징 과학 기술 학회 50주년 연례 회의(50th annual Conference of the Society for Imaging Science in Technology)에서 게스트로 초대받았다. 한편 플레이보이에 따르면 레나를 등장시켰던 잡지는 2006년 5월까지 가장 많이 팔린 기록(7,161,561부)을 가지고 있다고 한다. (위키백과 참고)

 

바로 그 이미지

 

 

레나(Lenna 또는 Lena)

 

레나(Lenna 또는 Lena)  https://www.wired.com/story/finding-lena-the-patron-saint-of-jpegs/

 

 

 

반응형