Skip to content

devhyuk96/IoTCloudPlatfoam

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

IoTBell Service

0. Github Clone (used Github Desktop / ์ž…๋ฌธ์ž ๊ฐ•๋ ฅ ์ถ”์ฒœ)

Github Desktop์ด๋ž€?

WINDOWS์—์„œ๋„ GIT ์†Œ์Šค๋ฅผ GUI๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” TOOL

Github Desktop ์œผ๋กœ repository clone ํ•˜๊ธฐ

1.GitHub Desktop ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

(์„ค์น˜ ์•ˆํ•˜์‹ ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ๋งํฌ ์ฐธ๊ณ ํ•˜์…”์„œ Github Desktop ์„ ์„ค์น˜ํ•˜์„ธ์š”.)

2.Clone ํ•˜๋ ค๋Š” github ์˜ repository url ์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

repository url

๋ณต์‚ฌํ•˜๋‹ˆ https://github.com/S-RSH/IoTCloudPlatfoam.git๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

3.GitHub Desktop ์—์„œ Add -> Clone repository ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

Clone repository

๊ทธ๋ฆฌ๊ณ  URL ํƒญ์—์„œ URL ์„ ๋ถ™ํ˜€๋„ฃ๊ธฐ ํ•˜๋ฉด, Local path ์— ํ•ด๋‹น repository name ์œผ๋กœ ํด๋”๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

Local path

[Clone] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

Github Desktop ์œผ๋กœ Publish repository ํ•˜์—ฌ Github์— ํŒŒ์ผ ์—…๋กœ๋“œํ•˜๊ธฐ

Local path ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด IoTCloudPlatfoam๋ผ๋Š” ์ด๋ฆ„์— ๋นˆ ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜์‹  ๊ฒƒ์„ ํ™•์ธํ•ด๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Folder

IoTCloudPlatfoam ํด๋”์— _โ€ป_aws_setting ๋ผ๋Š” ์ด๋ฆ„์— txt ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

File upload

github desktop์„ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด _โ€ป_aws_setting.txt ํŒŒ์ผ์ด ์ƒˆ๋กœ ์˜ฌ๋ผ์˜จ ๊ฒƒ์„ ํ™•์ธํ•ด๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋…ธ๋ž€์ƒ‰์œผ๋กœ ๋ฐ‘์ค„ ์นœ ๊ณณ์— ์—…๋กœ๋“œ ํ•  ํŒŒ์ผ์— ์„ค๋ช…์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์–ด์ฃผ์„ธ์š”.
Commit to master๋ฅผ ํด๋ฆญํ•˜์‹  ํ›„์— Publish repository๋ฅผ ํด๋ฆญํ•ด์ฃผ์„ธ์š”.

publish respoitory

Publish repository๋ฅผ ํด๋ฆญํ•˜์‹œ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐฝ์ด ๋œจ๋Š”๋ฐ Keep this code private์— ์ฒดํฌ ๋ฐ•์Šค๋ฅผ ํ’€์–ด์ฃผ์‹œ๊ณ 
Publish repository ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์ฃผ์„ธ์š”.

final

github.com ์„ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด IoTCloudPlatfoam ํ”„๋กœ์ ํŠธ๊ฐ€ ์—…๋กœ๋“œ๋œ ๊ฒƒ์„ ํ™•์ธํ•ด๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.

๊ตฌ์„ฑ ์š”์†Œ

๊ตฌ์„ฑ์š”์†Œ

Raspberry Pi 4B ์„œ๋น„์Šค ํ™˜๊ฒฝ

Raspberry Pi 4B์— 3๊ฐ€์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ–ˆ๋‹ค. AWS CLI, Boto3, Open CV.

AWS CLI - AWS๋ฅผ ์ปค๋งจ๋“œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์šดํ•œ๋‹ค.

Boto3 - Python์šฉ AWS SDK์ด๋‹ค. Boto3๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Python Script๋ฅผ AWS S3, DynamoDB, SNS ๋“ฑ AWS ์„œ๋น„์Šค์™€ ์‰ฝ๊ฒŒ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

Open CV - Open CV ์˜คํ”ˆ ์†Œ์Šค ์ค‘์—์„œ videocapture ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์นด๋ฉ”๋ผ ์ž…๋ ฅ๊ณผ ๋™์˜์ƒ ํŒŒ์ผ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜์˜€๋‹ค.

AWS CLI ์„ค์น˜ ๋ฐฉ๋ฒ•

Raspberry Pi termianl์„ ์—ด๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

pip3 install awscli

pip

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋˜๋ฉฐ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ ๋œ๋‹ค.

AWS CLI๋ฅผ ํ†ตํ•˜์—ฌ Raspberry Pi 4B ์‚ฌ์šฉ์ž ์„ค์ • ๋ฐฉ๋ฒ•

IAM Console ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

1.IAM ์‚ฌ์šฉ์ž ์ƒ์„ฑ

์šฐ์„  ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•  ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ ๋‹ค.

IAM

์‚ฌ์šฉ์ž ์ถ”๊ฐ€๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

์‚ฌ์šฉ์ž์ถ”๊ฐ€

raspberrypiuser๋ฅผ ์‚ฌ์šฉ์ž ์ด๋ฆ„์— ์ž…๋ ฅํ•˜๊ณ  ์ž๊ฒฉ ์ฆ๋ช… ์œ ํ˜• ์„ ํƒ์—์„œ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์„ ํƒํ•œ ํ›„ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
์ •์ฑ… ์„ ํƒ์ด ๋‚˜์˜จ๋‹ค.

policy

์—ฌ๋Ÿฌ ์˜ต์…˜์ด ๋‚˜์˜จ๋‹ค. ์‚ฌ์šฉํ•ด์•ผํ•  ์ •์ฑ…๋“ค์„ ์ด๋ฏธ ์ •ํ–ˆ๋‹ค๋ฉด ํ•ด๋‹น ์ •์ฑ…์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž˜๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด AdministratorAccess์„ ์„ ํƒํ•œ๋‹ค. ์ตœ๊ณ  ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์ •์ฑ…์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ •์ฑ…์„ ์„ ํƒํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

ํƒœ๊ทธ

์šฐ๋ฆฌ๋Š” ์ถ”๊ฐ€ํ•ด์•ผํ•  ํƒœ๊ทธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

๊ฒ€ํ† 

๋ฐฉ๊ธˆ ์šฐ๋ฆฌ๊ฐ€ ์„ค์ •ํ•œ ๋ถ€๋ถ„๋“ค์„ ๋ณด์—ฌ์ฃผ๋ฉฐ AWS๊ฐ€ ๋งˆ์ง€๋ง‰ ํ™•์ธ์„ ๋„์™€์ค€๋‹ค. ํ™•์ธ์„ ํ•œ ํ›„ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

์‚ฌ์šฉ์ž์ถ”๊ฐ€1

์•ก์„ธ์Šค ํ‚ค ID, ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค, ๊ทธ๋ฆฌ๊ณ  .CSV ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ดํ›„ ์ธ์ฆ ๊ณผ์ • ๊ฐ€์šด๋ฐ ํ•„์š”ํ•˜๋ฏ€๋กœ ์ „๋ถ€ ์ €์žฅ์„ ํ•œ๋‹ค.

2.Raspberry Pi 4B ์‚ฌ์šฉ์ž ์„ค์ • ํ•˜๊ธฐ

aws configure
์œ„ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด Access Key ID๋ฅผ ์ž…๋ ฅํ•˜๋ผ๊ณ  ํ•œ๋‹ค. '1.IAM ์‚ฌ์šฉ์ž ์ƒ์„ฑ'์—์„œ ์ƒ์„ฑํ•œ ์•ก์„ธ์Šค ํ‚ค ID๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ž…๋ ฅํ•ด์ค€๋‹ค. ์ž…๋ ฅํ•˜๋ฉด ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค๋„ ์ž…๋ ฅํ•˜๋ผ๊ณ  ํ•œ๋‹ค. ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ž…๋ ฅํ•ด์ค€๋‹ค.

ID

๋‹ค์Œ์œผ๋กœ ์ง€์—ญ์„ ์ž…๋ ฅํ•˜๋ผ๊ณ  ๋‚˜์˜ค๋Š”๋ฐ ์šฐ๋ฆฌ์˜ ์ง€์—ญ์€ ์„œ์šธ์ด๋ฏ€๋กœ 'ap-northeast-2'๋ฅผ ๋ณต์‚ฌํ•ด์„œ ์ž…๋ ฅํ•œ๋‹ค. ๊ทธํ›„ output format์„ ์ž…๋ ฅํ•˜๋ผ๊ณ  ํ•˜๋Š”๋ฐ json์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฏ€๋กœ josn์„ ์ž…๋ ฅํ•œ๋‹ค. ํ•ด๋‹น ๊ณผ์ •์„ ๋งˆ๋ฌด๋ฆฌ ํ•˜๋ฉด ๋‹ค์Œ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ํด๋”๊ฐ€ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ์ผ

Boto3 ์„ค์น˜ ๋ฐฉ๋ฒ•

Boto3๋Š” pytho 3.6๋ฒ„์ „ ์ด์ƒ๋ถ€ํ„ฐ ์‚ฌ์šฉ๋œ๋‹ค.

python3 --version

์ด ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ํŒŒ์ด์ฌ ๋ฒ„์ „์„ ํ™•์ธํ•œ๋‹ค. 3.6์ด์ƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ์—…๋ฐ์ดํŠธ๋ฅผ ํ•„์ˆ˜๋กœ ํ•ด์•ผํ•œ๋‹ค. 3.6์ด์ƒ ๋ฒ„์ „์ธ ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค๋ฉด ์„ค์น˜๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.

sudo pip3 install boto3

boto3

ํ„ฐ๋ฏธ๋„์— ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์„ ํ†ตํ•ด ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค.

Open CV ์„ค์น˜ ๋ฐฉ๋ฒ•

1.์ด์ „ ๋ฒ„์ „์˜ Open CV ์ œ๊ฑฐํ•˜๊ธฐ

Open CV ์ด์ „ ๋ฒ„์ „์ด ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์ƒˆ๋กœ ์„ค์น˜ํ•˜๋Š” Open CV 4.5.1 ๋ฒ„์ „์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

pkg-config --modversion opencv

์ด ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ Open CV ๋ฒ„์ „์„ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ ์„ค์น˜๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์„ค์น˜๋ฅผ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.(์ด ๊ฒฝ์šฐ 2๋ฒˆ์„ ์ง„ํ–‰ํ•œ๋‹ค.) ์ด์ „ ๋ฒ„์ „์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์‚ญ์ œํ•œ๋‹ค.

opencv

โ†‘์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์€ ์ƒํƒœ์˜ ๊ฒฝ์šฐ ๋‚˜์˜ค๋Š” ๋ฌธ๊ตฌ.

๋‹ค์Œ ๋ช…๋ น์œผ๋กœ Open CV ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ • ํŒŒ์ผ์„ ํฌํ•จํ•ด์„œ ๊ธฐ์กด์— ์„ค์น˜๋œ Open CV ํŒจํ‚ค์ง€๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

sudo apt-get purge  libopencv* python-opencv
sudo apt-get autoremove

์ปดํŒŒ์ผํ•˜์—ฌ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ์ฒ˜๋Ÿผ Open CV ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

pi@raspberrypi:~ $ pkg-config --modversion opencv

3.4.2

๋˜๋Š”

pi@raspberrypi:~ $ pkg-config --modversion opencv4

4.5.1

๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ๊ธฐ์กด์— ์„ค์น˜๋œ Open CV ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

sudo find /usr/local/ -name "*opencv*" -exec rm  {} \;

2.๊ธฐ์กด ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ์—…๊ทธ๋ ˆ์ด๋“œ OpenCV 4.5.1์„ ์„ค์น˜ํ•ด์ฃผ๊ธฐ ์ „์— ๊ธฐ์กด์— ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋“ค์„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด์— ์„ค์น˜๋œ ํŒจํ‚ค์ง€์˜ ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด ์ €์žฅ์†Œ์— ์žˆ๋‹ค๋ฉด ํŒจํ‚ค์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

sudo apt update 

์ดํ›„ ์žฌ๋ถ€ํŒ…์„ ํ•ด์ค๋‹ˆ๋‹ค.

sudo reboot

3.Open CV ์ปดํŒŒ์ผ ์ „ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜ Open CV๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

build-essential ํŒจํ‚ค์ง€์—๋Š” C/C++ ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, make ๊ฐ™์€ ๋„๊ตฌ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

cmake๋Š” ์ปดํŒŒ์ผ ์˜ต์…˜์ด๋‚˜ ๋นŒ๋“œ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ์‹œํ‚ฌ OpenCV ๋ชจ๋“ˆ ์„ค์ •๋“ฑ์„ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

sudo apt install build-essential cmake

ํŠน์ • ํฌ๋งท์˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์ž…๋‹ˆ๋‹ค.

sudo apt install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev

ํŠน์ • ์ฝ”๋ฑ์˜ ๋น„๋””์˜ค ํŒŒ์ผ/์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ฝ์–ด์˜ค๊ฑฐ๋‚˜ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ FFmpeg ๊ด€๋ จ ํŒจํ‚ค์ง€๋“ค์ž…๋‹ˆ๋‹ค.

sudo apt install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev

Video4Linux ํŒจํ‚ค์ง€๋Š” ๋ฆฌ๋ˆ…์Šค์—์„œ ์‹ค์‹œ๊ฐ„ ๋น„๋””์˜ค ์บก์ฒ˜๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„์™€ API๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

sudo apt install libv4l-dev v4l-utils

ํŠน์ • ์ฝ”๋ฑ์˜ ๋น„๋””์˜ค ํŒŒ์ผ/์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ฝ์–ด์˜ค๊ฑฐ๋‚˜ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ GStreamer ๊ด€๋ จ ํŒจํ‚ค์ง€๋“ค์ž…๋‹ˆ๋‹ค.

sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly

OpenCV์—์„œ๋Š” highgui ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์ฒด์ ์œผ๋กœ ์œˆ๋„์šฐ ์ƒ์„ฑํ•˜์—ฌ ์ด๋ฏธ์ง€๋‚˜ ์˜์ƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์œˆ๋„์šฐ ์ƒ์„ฑ ๋“ฑ์˜ GUI๋ฅผ ์œ„ํ•ด gtk ๋˜๋Š” qt๋ฅผ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๊ธ€์—์„œ๋Š” gtk2๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

sudo apt install libgtk2.0-dev

OpenGL ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

sudo apt install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev

OpenCV ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ž…๋‹ˆ๋‹ค.

sudo apt install libatlas-base-dev gfortran libeigen3-dev

python2.7-dev์™€ python3-dev ํŒจํ‚ค์ง€๋Š” ํŒŒ์ด์ฌ์„ ์œ„ํ•œ ํ—ค๋”ํŒŒ์ผ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ํŒจํ‚ค์ง€๋“ค์ž…๋‹ˆ๋‹ค.

Numpy๋Š” ๋งคํŠธ๋ฆญ์Šค ์—ฐ์‚ฐ๋“ฑ์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ OpenCV Python์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

sudo apt install python3-dev python3-numpy

4.Open CV ์„ค์ •๊ณผ ์ปดํŒŒ์ผ ๋ฐ ์„ค์น˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•  ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ด๋™ ํ›„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค

mkdir opencv
cd opencv
~/opencv $

OpenCV 4.5.1 ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ์••์ถ•์„ ํ’€์–ด์ค๋‹ˆ๋‹ค.

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.1.zip
unzip opencv.zip

opencv_contrib(extra modules) ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ์••์ถ•์„ ํ’€์–ด์ค๋‹ˆ๋‹ค.

SURF ๋“ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.1.zip
unzip opencv_contrib.zip

๋‹ค์Œ์ฒ˜๋Ÿผ ๋‘ ๊ฐœ์˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

pi@raspberrypi:~/opencv $  ls -d */

opencv-4.5.1  opencv_contrib-4.5.1

opencv-4.5.1 ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ build ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  build ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ์€ build ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

pi@raspberrypi:~/opencv $  cd opencv-4.5.1

pi@raspberrypi:~/opencv/opencv-4.5.1 $  mkdir build

pi@raspberrypi:~/opencv/opencv-4.5.1 $  cd build

pi@raspberrypi:~/opencv/opencv-4.5.1/build $  

cmake๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OpenCV ์ปดํŒŒ์ผ ์„ค์ •์„ ํ•ด์ค๋‹ˆ๋‹ค. ๋ณต์‚ฌํ•ด์„œ ํ„ฐ๋ฏธ๋„์— ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

OPENCV1

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=OFF -D WITH_IPP=OFF -D WITH_1394=OFF -D BUILD_WITH_DEBUG_INFO=OFF -D BUILD_DOCS=OFF -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D ENABLE_NEON=ON -D ENABLE_VFPV3=ON -D WITH_QT=OFF -D WITH_GTK=ON -D WITH_OPENGL=ON -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.1/modules -D WITH_V4L=ON -D WITH_FFMPEG=ON -D WITH_XINE=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON -D OPENCV_GENERATE_PKGCONFIG=ON ../

๋‹ค์Œ์ฒ˜๋Ÿผ cmake ์‹คํ–‰ ์ค‘์— ์ถ”๊ฐ€์ ์ธ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์— ์ธํ„ฐ๋„ท์ด ์—ฐ๊ฒฐ๋œ ์ƒํƒœ์—์„œ ์ง„ํ–‰ํ•˜์„ธ์š”.

-- xfeatures2d/boostdesc: Download: boostdesc_bgm.i

-- xfeatures2d/boostdesc: Download: boostdesc_bgm_bi.i

-- xfeatures2d/boostdesc: Download: boostdesc_bgm_hd.i

-- xfeatures2d/boostdesc: Download: boostdesc_binboost_064.i

-- xfeatures2d/boostdesc: Download: boostdesc_binboost_128.i

-- xfeatures2d/boostdesc: Download: boostdesc_binboost_256.i

-- xfeatures2d/boostdesc: Download: boostdesc_lbgm.i

-- xfeatures2d/vgg: Download: vgg_generated_48.i

-- xfeatures2d/vgg: Download: vgg_generated_64.i

-- xfeatures2d/vgg: Download: vgg_generated_80.i

-- xfeatures2d/vgg: Download: vgg_generated_120.i

-- data: Download: face_landmark_model.dat

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ณด์ด๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

-- Configuring done

-- Generating done

-- Build files have been written to: /home/pi/opencv/opencv-4.5.1/build

์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์Šค์™‘(swap) ๊ณต๊ฐ„์„ ๋Š˜๋ ค์ค˜์•ผ ๋ฉ€ํ‹ฐ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

/etc/dphys-swapfile ํŒŒ์ผ์„ ์—ด์–ด์„œ

sudo nano /etc/dphys-swapfile

CONF_SWAPSIZE ๋ณ€์ˆ˜๊ฐ’์„ 100์—์„œ 2048๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

Ctrl + O๋ฅผ ๋ˆŒ๋Ÿฌ ์ €์žฅํ•˜๊ณ  Ctrl + X๋ฅผ ๋ˆŒ๋Ÿฌ ๋น ์ ธ๋‚˜์˜ต๋‹ˆ๋‹ค.

์Šค์™‘ ์„œ๋น„์Šค ์žฌ์‹œ์ž‘ํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ์„ค์ •์„ ๋ฐ˜์˜์‹œ์ผœ์ฃผ๋ฉด ์Šค์™‘ ํฌ๊ธฐ๊ฐ€ ๋Œ€๋žต 20๋ฐฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์Šค์™‘ ๊ด€๋ จ ์„œ๋น„์Šค๋ฅผ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค

pi@raspberrypi:~/opencv/opencv-4.5.1/build $ sudo /etc/init.d/dphys-swapfile restart

[ ok ] Restarting dphys-swapfile (via systemctl): dphys-swapfile.service.

์ด์ œ make ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. -j4 ์˜ต์…˜์„ ์ฃผ๊ณ  ์šฐ์„  ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

time make -j4

์ด์ œ ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ๋ฌผ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ ์ฝ”๋“œ๋“ค์€ /usr/local/share/opencv4/samples/ ์œ„์น˜์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.

sudo make install

opencv ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

sudo ldconfig

/etc/dphys-swapfile ํŒŒ์ผ์„ ์—ด์–ด์„œ

sudo nano /etc/dphys-swapfile

CONF_SWAPSIZE ๋ณ€์ˆ˜๊ฐ’์„ ๋‹ค์‹œ 100์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

์Šค์™‘ ์„œ๋น„์Šค ์žฌ์‹œ์ž‘ํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ์„ค์ •์„ ๋ฐ˜์˜์‹œ์ผœ์ฃผ๋ฉด ์Šค์™‘ ํฌ๊ธฐ๊ฐ€ ์›๋ž˜๋Œ€๋กœ ๋Œ์•„์˜ต๋‹ˆ๋‹ค.

pi@raspberrypi:~/opencv/opencv-4.5.1/build $ sudo /etc/init.d/dphys-swapfile restart

[ ok ] Restarting dphys-swapfile (via systemctl): dphys-swapfile.service.

5.Open CV ์„ค์น˜ ๊ฒฐ๊ณผ ํ™•์ธ

python 3์—์„œ opencv ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ์ง€๋Š” ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

OpenCV ๋ฒ„์ „์ด ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

pi@raspberrypi:~/opencv/opencv-4.5.1/build $ python3

Python 3.9.2 (default, Mar 12 2021, 04:06:34)

[GCC 10.2.1 20210110] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import cv2

>>> cv2.__version__

'4.5.1'

>>> quit()

์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ด…๋‹ˆ๋‹ค. ์›น์บ  ์˜์ƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ python3 /usr/local/share/opencv4/samples/python/video.py

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

[ WARN:0] global /home/pi/opencv/opencv-4.5.1/modules/videoio/src/cap_gstreamer.cpp (935) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1

์ˆ˜์ •ํ•ด๋ด…์‹œ๋‹ค. OpenCV์—์„œ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ง„ํ–‰ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. video.py ํŒŒ์ผ์„ ์—ด์–ด์„œ

$ nano video.py

188๋ฒˆ์งธ ์ค„์„ ๋‹ค์Œ์ฒ˜๋Ÿผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. Ctrl + O๋กœ ์ €์žฅํ›„, Ctrl + X๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

cap = cv.VideoCapture(source, cv.CAP_V4L2)

์‹คํ–‰ํ•ด๋ด…๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๋ฌธ ์—†์ด ์˜์ƒ์ด ๋ฐ”๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

$ python video.py

$ python3 video.py

์ด์ œ ํ•„์š” ์—†์–ด์ง„ ์ปดํŒŒ์ผ์— ์‚ฌ์šฉํ–ˆ๋˜ opencv ์†Œ์Šค์ฝ”๋“œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

pi@raspberrypi:~/opencv/opencv-4.5.1/build $ cd

pi@raspberrypi:~ $ rm -rf opencv

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors