본문 바로가기

ICT 학습

이미지 처리로 시작하는 딥러닝 - 1주차

[Learn by Doing 영상 보기]

https://youtu.be/432p379XXMw

내가 평소 생각하는 학습 방법과 유사한 설명이 있는 비디오.

- 무엇을 만들고 싶은지 목표를 세우고

- 누군가 미리 학습 시켜 놓은 모델을 찾는다.

- 추가로 라이브러리를 통해서 모델을 튜닝해보자.

- 마이크로 서비스 형태로 배포해서 실제 사용해 보자.(제품을 일단 만들어보자. 그리고 필요하면 더 기능 및 다양성을 추구해 보자)

 

 

[공부에 필요한 사이트  및 예시 소개]

https://course.fast.ai/

 

Practical Deep Learning for Coders | Practical Deep Learning for Coders

Deep learning has power, flexibility, and simplicity. That's why we believe it should be applied across many disciplines. These include the social and physical sciences, the arts, medicine, finance, scientific research, and many more. Here's a list of some

course.fast.ai

https://www.youtube.com/watch?v=civyvhx6b6U 

차량 번호판을 인지의 예시(yolo v3 library 활용 예시)

https://www.youtube.com/watch?v=MDT7_zV-1wQ 

차량 번호판을 인지의 예시 2

 

 

 

[ 학습에 필요한 환경 구성 ]

Local PC : 왠만한 컴은 다됨.

 

Visual Studio Code 설치 : https://code.visualstudio.com/download

 

Download Visual Studio Code - Mac, Linux, Windows

Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.

code.visualstudio.com

 

 

    - 확장(Extensions) 설치

    Python, Python for VSCode, Python Extension Pack, Code Runner

 

Anaconda 설치 : https://www.anaconda.com/products/individual

 

Anaconda | Anaconda Distribution

Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

 

 

Anaconda 가상환경 설정 :

-> 윈도우 - Anaconda Prompt(Anaconda), 맥 - Terminal 실행

(base) C:\Users\zookeepers>conda create --name sparta_project python==3.8 pip

(base) C:\Users\zookeepers>conda activate sparta_project

(sparta_project) C:\Users\zookeepers>pip install tensorflow

(sparta_project) C:\Users\zookeepers>pip install opencv-python

(sparta_project) C:\Users\zookeepers>conda install -c conda-forge dlib

(sparta_project) C:\Users\zookeepers>conda list

더보기

(base) C:\Users\zookeepers>conda create --name sparta_project python==3.8 pip ==> 가상의 콘다 환경 생성
Collecting package metadata (current_repodata.json): done
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.10.3
  latest version: 4.12.0

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: D:\anaconda\envs\sparta_project

  added / updated specs:
    - pip
    - python==3.8


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    ca-certificates-2022.3.29  |       haa95532_0         122 KB
    certifi-2021.10.8          |   py38haa95532_2         152 KB
    openssl-1.1.1n             |       h2bbff1b_0         4.8 MB
    pip-21.2.2                 |   py38haa95532_0         1.9 MB
    python-3.8.0               |       hff0d562_2        15.9 MB
    setuptools-61.2.0          |   py38haa95532_0         1.0 MB
    sqlite-3.38.2              |       h2bbff1b_0         807 KB
    wheel-0.37.1               |     pyhd3eb1b0_0          33 KB
    wincertstore-0.2           |   py38haa95532_2          15 KB
    ------------------------------------------------------------
                                           Total:        24.7 MB

The following NEW packages will be INSTALLED:

  ca-certificates    pkgs/main/win-64::ca-certificates-2022.3.29-haa95532_0
  certifi            pkgs/main/win-64::certifi-2021.10.8-py38haa95532_2
  openssl            pkgs/main/win-64::openssl-1.1.1n-h2bbff1b_0
  pip                pkgs/main/win-64::pip-21.2.2-py38haa95532_0
  python             pkgs/main/win-64::python-3.8.0-hff0d562_2
  setuptools         pkgs/main/win-64::setuptools-61.2.0-py38haa95532_0
  sqlite             pkgs/main/win-64::sqlite-3.38.2-h2bbff1b_0
  vc                 pkgs/main/win-64::vc-14.2-h21ff451_1
  vs2015_runtime     pkgs/main/win-64::vs2015_runtime-14.27.29016-h5e58377_2
  wheel              pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
  wincertstore       pkgs/main/win-64::wincertstore-0.2-py38haa95532_2


Proceed ([y]/n)?y

 

:

:

:

설치.........

 

 

끝나고 화면 전환.

done
#
# To activate this environment, use
#
#     $ conda activate sparta_project
#
# To deactivate an active environment, use
#
#     $ conda deactivate


(base) C:\Users\zookeepers>conda activate sparta_project  ==> 프로젝트 환경 실행.

(sparta_project) C:\Users\zookeepers>pip install tensorflow ==> tensorflow 및 관련 library 설치

Collecting tensorflow
  Downloading tensorflow-2.8.0-cp38-cp38-win_amd64.whl (438.0 MB)
     |████████████████████████████████| 438.0 MB 93 kB/s
Collecting protobuf>=3.9.2
  Downloading protobuf-3.20.0-cp38-cp38-win_amd64.whl (904 kB)
     |████████████████████████████████| 904 kB ...
Collecting astunparse>=1.6.0
  Downloading astunparse-1.6.3-py2.py3-none-any.whl (12 kB)
Collecting flatbuffers>=1.12
  Downloading flatbuffers-2.0-py2.py3-none-any.whl (26 kB)
Collecting google-pasta>=0.1.1
  Downloading google_pasta-0.2.0-py3-none-any.whl (57 kB)
     |████████████████████████████████| 57 kB 2.4 MB/s
Collecting tensorboard<2.9,>=2.8
  Downloading tensorboard-2.8.0-py3-none-any.whl (5.8 MB)
     |████████████████████████████████| 5.8 MB ...
Collecting tf-estimator-nightly==2.8.0.dev2021122109
  Downloading tf_estimator_nightly-2.8.0.dev2021122109-py2.py3-none-any.whl (462 kB)
     |████████████████████████████████| 462 kB 6.4 MB/s
Requirement already satisfied: setuptools in d:\anaconda\envs\sparta_project\lib\site-packages (from tensorflow) (61.2.0)
Collecting keras-preprocessing>=1.1.1
  Downloading Keras_Preprocessing-1.1.2-py2.py3-none-any.whl (42 kB)
     |████████████████████████████████| 42 kB ...
Collecting tensorflow-io-gcs-filesystem>=0.23.1
  Downloading tensorflow_io_gcs_filesystem-0.24.0-cp38-cp38-win_amd64.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB ...
Collecting wrapt>=1.11.0
  Downloading wrapt-1.14.0-cp38-cp38-win_amd64.whl (36 kB)
Collecting keras<2.9,>=2.8.0rc0
  Downloading keras-2.8.0-py2.py3-none-any.whl (1.4 MB)
     |████████████████████████████████| 1.4 MB ...
Collecting absl-py>=0.4.0
  Downloading absl_py-1.0.0-py3-none-any.whl (126 kB)
     |████████████████████████████████| 126 kB ...
Collecting opt-einsum>=2.3.2
  Downloading opt_einsum-3.3.0-py3-none-any.whl (65 kB)
     |████████████████████████████████| 65 kB 1.9 MB/s
Collecting h5py>=2.9.0
  Downloading h5py-3.6.0-cp38-cp38-win_amd64.whl (2.8 MB)
     |████████████████████████████████| 2.8 MB ...
Collecting gast>=0.2.1
  Downloading gast-0.5.3-py3-none-any.whl (19 kB)
Collecting libclang>=9.0.1
  Downloading libclang-13.0.0-py2.py3-none-win_amd64.whl (13.9 MB)
     |████████████████████████████████| 13.9 MB ...
Collecting termcolor>=1.1.0
  Downloading termcolor-1.1.0.tar.gz (3.9 kB)
Collecting typing-extensions>=3.6.6
  Downloading typing_extensions-4.1.1-py3-none-any.whl (26 kB)
Collecting grpcio<2.0,>=1.24.3
  Downloading grpcio-1.44.0-cp38-cp38-win_amd64.whl (3.4 MB)
     |████████████████████████████████| 3.4 MB 6.8 MB/s
Collecting six>=1.12.0
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting numpy>=1.20
  Downloading numpy-1.22.3-cp38-cp38-win_amd64.whl (14.7 MB)
     |████████████████████████████████| 14.7 MB ...
Requirement already satisfied: wheel<1.0,>=0.23.0 in d:\anaconda\envs\sparta_project\lib\site-packages (from astunparse>=1.6.0->tensorflow) (0.37.1)
Collecting google-auth-oauthlib<0.5,>=0.4.1
  Downloading google_auth_oauthlib-0.4.6-py2.py3-none-any.whl (18 kB)
Collecting werkzeug>=0.11.15
  Downloading Werkzeug-2.1.1-py3-none-any.whl (224 kB)
     |████████████████████████████████| 224 kB ...
Collecting requests<3,>=2.21.0
  Downloading requests-2.27.1-py2.py3-none-any.whl (63 kB)
     |████████████████████████████████| 63 kB 641 kB/s
Collecting tensorboard-data-server<0.7.0,>=0.6.0
  Downloading tensorboard_data_server-0.6.1-py3-none-any.whl (2.4 kB)
Collecting markdown>=2.6.8
  Downloading Markdown-3.3.6-py3-none-any.whl (97 kB)
     |████████████████████████████████| 97 kB ...
Collecting tensorboard-plugin-wit>=1.6.0
  Downloading tensorboard_plugin_wit-1.8.1-py3-none-any.whl (781 kB)
     |████████████████████████████████| 781 kB ...
Collecting google-auth<3,>=1.6.3
  Downloading google_auth-2.6.5-py2.py3-none-any.whl (156 kB)
     |████████████████████████████████| 156 kB 6.4 MB/s
Collecting cachetools<6.0,>=2.0.0
  Downloading cachetools-5.0.0-py3-none-any.whl (9.1 kB)
Collecting pyasn1-modules>=0.2.1
  Downloading pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
     |████████████████████████████████| 155 kB ...
Collecting rsa<5,>=3.1.4
  Downloading rsa-4.8-py3-none-any.whl (39 kB)
Collecting requests-oauthlib>=0.7.0
  Downloading requests_oauthlib-1.3.1-py2.py3-none-any.whl (23 kB)
Collecting importlib-metadata>=4.4
  Downloading importlib_metadata-4.11.3-py3-none-any.whl (18 kB)
Collecting zipp>=0.5
  Downloading zipp-3.8.0-py3-none-any.whl (5.4 kB)
Collecting pyasn1<0.5.0,>=0.4.6
  Downloading pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
     |████████████████████████████████| 77 kB ...
Collecting idna<4,>=2.5
  Downloading idna-3.3-py3-none-any.whl (61 kB)
     |████████████████████████████████| 61 kB ...
Collecting urllib3<1.27,>=1.21.1
  Downloading urllib3-1.26.9-py2.py3-none-any.whl (138 kB)
     |████████████████████████████████| 138 kB ...
Requirement already satisfied: certifi>=2017.4.17 in d:\anaconda\envs\sparta_project\lib\site-packages (from requests<3,>=2.21.0->tensorboard<2.9,>=2.8->tensorflow) (2021.10.8)
Collecting charset-normalizer~=2.0.0
  Downloading charset_normalizer-2.0.12-py3-none-any.whl (39 kB)
Collecting oauthlib>=3.0.0
  Downloading oauthlib-3.2.0-py3-none-any.whl (151 kB)
     |████████████████████████████████| 151 kB ...
Building wheels for collected packages: termcolor
  Building wheel for termcolor (setup.py) ... done
  Created wheel for termcolor: filename=termcolor-1.1.0-py3-none-any.whl size=4848 sha256=52e2a7547fa89f30422d11a2182201380cbf5bd44fa18b5839748d4b701e283a
  Stored in directory: c:\users\zookeepers\appdata\local\pip\cache\wheels\a0\16\9c\5473df82468f958445479c59e784896fa24f4a5fc024b0f501
Successfully built termcolor
Installing collected packages: urllib3, pyasn1, idna, charset-normalizer, zipp, six, rsa, requests, pyasn1-modules, oauthlib, cachetools, requests-oauthlib, importlib-metadata, google-auth, werkzeug, tensorboard-plugin-wit, tensorboard-data-server, protobuf, numpy, markdown, grpcio, google-auth-oauthlib, absl-py, wrapt, typing-extensions, tf-estimator-nightly, termcolor, tensorflow-io-gcs-filesystem, tensorboard, opt-einsum, libclang, keras-preprocessing, keras, h5py, google-pasta, gast, flatbuffers, astunparse, tensorflow
Successfully installed absl-py-1.0.0 astunparse-1.6.3 cachetools-5.0.0 charset-normalizer-2.0.12 flatbuffers-2.0 gast-0.5.3 google-auth-2.6.5 google-auth-oauthlib-0.4.6 google-pasta-0.2.0 grpcio-1.44.0 h5py-3.6.0 idna-3.3 importlib-metadata-4.11.3 keras-2.8.0 keras-preprocessing-1.1.2 libclang-13.0.0 markdown-3.3.6 numpy-1.22.3 oauthlib-3.2.0 opt-einsum-3.3.0 protobuf-3.20.0 pyasn1-0.4.8 pyasn1-modules-0.2.8 requests-2.27.1 requests-oauthlib-1.3.1 rsa-4.8 six-1.16.0 tensorboard-2.8.0 tensorboard-data-server-0.6.1 tensorboard-plugin-wit-1.8.1 tensorflow-2.8.0 tensorflow-io-gcs-filesystem-0.24.0 termcolor-1.1.0 tf-estimator-nightly-2.8.0.dev2021122109 typing-extensions-4.1.1 urllib3-1.26.9 werkzeug-2.1.1 wrapt-1.14.0 zipp-3.8.0

 

(sparta_project) C:\Users\zookeepers>pip install opencv-python ==> Compute Vision을 위한 opencv library 설치
Collecting opencv-python
  Downloading opencv_python-4.5.5.64-cp36-abi3-win_amd64.whl (35.4 MB)
     |████████████████████████████████| 35.4 MB 6.4 MB/s
Requirement already satisfied: numpy>=1.17.3 in d:\anaconda\envs\sparta_project\lib\site-packages (from opencv-python) (1.22.3)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.5.5.64
(sparta_project) C:\Users\zookeepers>

 

 

(sparta_project) C:\Users\zookeepers>conda install -c conda-forge dlib ==> dlib library 및 추가 패키지 설치
Collecting package metadata (current_repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.10.3
  latest version: 4.12.0

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: D:\anaconda\envs\sparta_project

  added / updated specs:
    - dlib


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    ca-certificates-2021.10.8  |       h5b45459_0         176 KB  conda-forge
    certifi-2021.10.8          |   py38haa244fe_2         146 KB  conda-forge
    dlib-19.23.1               |   py38h8ec1e2c_0         4.4 MB  conda-forge
    intel-openmp-2022.0.0      |    h57928b3_3663         3.6 MB  conda-forge
    jpeg-9e                    |       h8ffe710_0         373 KB  conda-forge
    libblas-3.9.0              |     14_win64_mkl         5.3 MB  conda-forge
    libcblas-3.9.0             |     14_win64_mkl         5.3 MB  conda-forge
    liblapack-3.9.0            |     14_win64_mkl         5.3 MB  conda-forge
    libpng-1.6.37              |       h1d00b33_2         724 KB  conda-forge
    libzlib-1.2.11             |    h8ffe710_1014          64 KB  conda-forge
    mkl-2022.0.0               |     h0e2418a_796       181.9 MB  conda-forge
    numpy-1.22.3               |   py38h5ed9b9d_2         6.1 MB  conda-forge
    openssl-1.1.1n             |       h8ffe710_0         5.7 MB  conda-forge
    python_abi-3.8             |           2_cp38           4 KB  conda-forge
    tbb-2021.5.0               |       h2d74725_1         148 KB  conda-forge
    zlib-1.2.11                |    h8ffe710_1014         106 KB  conda-forge
    ------------------------------------------------------------
                                           Total:       219.2 MB

The following NEW packages will be INSTALLED:

  dlib               conda-forge/win-64::dlib-19.23.1-py38h8ec1e2c_0
  intel-openmp       conda-forge/win-64::intel-openmp-2022.0.0-h57928b3_3663
  jpeg               conda-forge/win-64::jpeg-9e-h8ffe710_0
  libblas            conda-forge/win-64::libblas-3.9.0-14_win64_mkl
  libcblas           conda-forge/win-64::libcblas-3.9.0-14_win64_mkl
  liblapack          conda-forge/win-64::liblapack-3.9.0-14_win64_mkl
  libpng             conda-forge/win-64::libpng-1.6.37-h1d00b33_2
  libzlib            conda-forge/win-64::libzlib-1.2.11-h8ffe710_1014
  mkl                conda-forge/win-64::mkl-2022.0.0-h0e2418a_796
  numpy              conda-forge/win-64::numpy-1.22.3-py38h5ed9b9d_2
  python_abi         conda-forge/win-64::python_abi-3.8-2_cp38
  tbb                conda-forge/win-64::tbb-2021.5.0-h2d74725_1
  zlib               conda-forge/win-64::zlib-1.2.11-h8ffe710_1014

The following packages will be SUPERSEDED by a higher-priority channel:

  ca-certificates    pkgs/main::ca-certificates-2022.3.29-~ --> conda-forge::ca-certificates-2021.10.8-h5b45459_0
  certifi            pkgs/main::certifi-2021.10.8-py38haa9~ --> conda-forge::certifi-2021.10.8-py38haa244fe_2
  openssl              pkgs/main::openssl-1.1.1n-h2bbff1b_0 --> conda-forge::openssl-1.1.1n-h8ffe710_0


Proceed ([y]/n)? y

 

Downloading and Extracting Packages
intel-openmp-2022.0. | 3.6 MB    | ################################################################################################## | 100%
certifi-2021.10.8    | 146 KB    | ################################################################################################## | 100%
tbb-2021.5.0         | 148 KB    | ################################################################################################## | 100%
libblas-3.9.0        | 5.3 MB    | ################################################################################################## | 100%
numpy-1.22.3         | 6.1 MB    | ################################################################################################## | 100%
openssl-1.1.1n       | 5.7 MB    | ################################################################################################## | 100%
zlib-1.2.11          | 106 KB    | ################################################################################################## | 100%
mkl-2022.0.0         | 181.9 MB  | ################################################################################################## | 100%
python_abi-3.8       | 4 KB      | ################################################################################################## | 100%
libzlib-1.2.11       | 64 KB     | ################################################################################################## | 100%
libpng-1.6.37        | 724 KB    | ################################################################################################## | 100%
ca-certificates-2021 | 176 KB    | ################################################################################################## | 100%
dlib-19.23.1         | 4.4 MB    | ################################################################################################## | 100%
jpeg-9e              | 373 KB    | ################################################################################################## | 100%
liblapack-3.9.0      | 5.3 MB    | ################################################################################################## | 100%
libcblas-3.9.0       | 5.3 MB    | ################################################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

(sparta_project) C:\Users\zookeepers>conda list ==> 해당 환경내에 필요한 library들이 정확하게 설치되어 있는지를 확인 (Tensorflow, OpenCV, Dlib)
# packages in environment at D:\anaconda\envs\sparta_project:
#
# Name                    Version                   Build  Channel
absl-py                   1.0.0                    pypi_0    pypi
astunparse                1.6.3                    pypi_0    pypi
ca-certificates           2021.10.8            h5b45459_0    conda-forge
cachetools                5.0.0                    pypi_0    pypi
certifi                   2021.10.8        py38haa244fe_2    conda-forge
charset-normalizer        2.0.12                   pypi_0    pypi
dlib                      19.23.1          py38h8ec1e2c_0    conda-forge
flatbuffers               2.0                      pypi_0    pypi
gast                      0.5.3                    pypi_0    pypi
google-auth               2.6.5                    pypi_0    pypi
google-auth-oauthlib      0.4.6                    pypi_0    pypi
google-pasta              0.2.0                    pypi_0    pypi
grpcio                    1.44.0                   pypi_0    pypi
h5py                      3.6.0                    pypi_0    pypi
idna                      3.3                      pypi_0    pypi
importlib-metadata        4.11.3                   pypi_0    pypi
intel-openmp              2022.0.0          h57928b3_3663    conda-forge
jpeg                      9e                   h8ffe710_0    conda-forge
keras                     2.8.0                    pypi_0    pypi
keras-preprocessing       1.1.2                    pypi_0    pypi
libblas                   3.9.0              14_win64_mkl    conda-forge
libcblas                  3.9.0              14_win64_mkl    conda-forge
libclang                  13.0.0                   pypi_0    pypi
liblapack                 3.9.0              14_win64_mkl    conda-forge
libpng                    1.6.37               h1d00b33_2    conda-forge
libzlib                   1.2.11            h8ffe710_1014    conda-forge
markdown                  3.3.6                    pypi_0    pypi
mkl                       2022.0.0           h0e2418a_796    conda-forge
numpy                     1.22.3           py38h5ed9b9d_2    conda-forge
oauthlib                  3.2.0                    pypi_0    pypi
opencv-python             4.5.5.64                 pypi_0    pypi
openssl                   1.1.1n               h8ffe710_0    conda-forge
opt-einsum                3.3.0                    pypi_0    pypi
pip                       21.2.2           py38haa95532_0
protobuf                  3.20.0                   pypi_0    pypi
pyasn1                    0.4.8                    pypi_0    pypi
pyasn1-modules            0.2.8                    pypi_0    pypi
python                    3.8.0                hff0d562_2
python_abi                3.8                      2_cp38    conda-forge
requests                  2.27.1                   pypi_0    pypi
requests-oauthlib         1.3.1                    pypi_0    pypi
rsa                       4.8                      pypi_0    pypi
setuptools                61.2.0           py38haa95532_0
six                       1.16.0                   pypi_0    pypi
sqlite                    3.38.2               h2bbff1b_0
tbb                       2021.5.0             h2d74725_1    conda-forge
tensorboard               2.8.0                    pypi_0    pypi
tensorboard-data-server   0.6.1                    pypi_0    pypi
tensorboard-plugin-wit    1.8.1                    pypi_0    pypi
tensorflow                2.8.0                    pypi_0    pypi
tensorflow-io-gcs-filesystem 0.24.0                   pypi_0    pypi
termcolor                 1.1.0                    pypi_0    pypi
tf-estimator-nightly      2.8.0.dev2021122109          pypi_0    pypi
typing-extensions         4.1.1                    pypi_0    pypi
urllib3                   1.26.9                   pypi_0    pypi
vc                        14.2                 h21ff451_1
vs2015_runtime            14.27.29016          h5e58377_2
werkzeug                  2.1.1                    pypi_0    pypi
wheel                     0.37.1             pyhd3eb1b0_0
wincertstore              0.2              py38haa95532_2
wrapt                     1.14.0                   pypi_0    pypi
zipp                      3.8.0                    pypi_0    pypi
zlib                      1.2.11            h8ffe710_1014    conda-forge

(sparta_project) C:\Users\zookeepers>

 

 

[ VSCode와 Anaconda 환경의 연결  및 주요 라이브러리 버전 확인]

- Visual Studio Code 실행

- test.py 파일을 만들고 아래 코드를 해당 파일에 입력

더보기

import cv2
import tensorflow as tf
import dlib

print(cv2.__version__)
print(tf.__version__)
print(dlib.__version__)

 

- Ctrl + p 입력 후 > 키 입력, python select interpreter 입력 후 리스트에서 앞서 생성된 conda 환경 값인 sparta_project를 선택

- VSCode 창의 화면 가장 왼쪽 아래에 Python 3.8.0 64-bit ('spart_project': conda)라는 값 확인이면 정상

- cmd/ctrl+F5 버튼을 누르거나 마우스 오른쪽 클릭 후 Run Python File in Terminal을 눌러서 해당 코드를 실행하면 아래와 같은 화면 나오면 정상.

더보기

Microsoft Windows [Version 10.0.22000.556]
(c) Microsoft Corporation. All rights reserved.

D:\SPARTA_WEEK1>D:/anaconda/Scripts/activate

(base) D:\SPARTA_WEEK1> cmd /C "D:\anaconda\envs\sparta_project\python.exe c:\Users\zookeepers\.vscode\extensions\ms-python.python-2021.8.1159798656\pythonFiles\lib\python\debugpy\launcher 1218 -- d:\SPARTA_WEEK1\test.py "
2022-04-16 17:28:45.174882: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
2022-04-16 17:28:45.178442: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
4.5.5
2.8.0
19.23.1

(base) D:\SPARTA_WEEK1>conda activate sparta_project

(sparta_project) D:\SPARTA_WEEK1> ==> conda 환경 적용 완료

 

 

[ 주요 논문 구경하기 ]

- CNN 관련 논문 구경하기

http://yann.lecun.com/exdb/publis/pdf/lecun-99.pdf

 

- GAN 관련 논문 구경하기

https://arxiv.org/pdf/1406.2661.pdf

 

 

[ Deep Learning Model 비교 ]

- Deep Feedforward Network (DFN) - 가장 기본적인 형태

딥러닝 전 머신러닝에서는 뉴런이 한개 정도만 수행, 선형적인 구조에서 비선형적인 구조로 발전,

노란색 부분이 input , 붉은 색 부분이 output 이다.

 

초록색 부분이 hidden layer이며, 사람이 봐도 직접적으로 확인하기가 어려운 구조.

Fully Connected 방식이 기본이며, 다중 층(MLP - Multi Layer Perceptron, 다중레이어 퍼셉트론) 이라고 부르기도 함.

- Deep Feedforward Network (DFN) - sparta coding club 참고

 

 

 

- Recurrent Neural Network (RNN)과 Long/Short Term Memory (LSTM)

우선 RNN은 시계열 데이터(타임 시리즈 데이터)에 주로 사용되는데 예를 들어 내일의 기상 이나 내일의 주식 또는 내일의 물가 예측 등 시간이 관계되어 있는(x축) 데이터에 많이 쓰임.

 

노란색이 Input, 붉은 색이 Output (D+1의 아웃풋을 얻기 위해 D-1, D-2, D-3일의 값을 입력하는 형태로 사용)

 

LSTM은 RNN(RNN에 기억력을 보강)의 약점을 보완한 알고리즘으로 짧은 기억력을 각 뉴런에 제공해서 자체적인 기억력을 통해 보다 더 높은 정확도를 얻을 수 있도록 설계.

 

시계열 데이터에 역시 많이 사용되며, 자연어 처리(NLP: Natual Language Processing)에 많이 사용됨.사람이 말을 한 것을 문자로 바꾼다거나, 등등.. 사람의 말을 예측할 때 등.

 

 

- Recurrent Neural Network (RNN)과 Long/Short Term Memory (LSTM) -&nbsp;sparta coding club 참고

 

 

 

- Convolutional Neural Network (CNN)

Convolution 연산을 하는 Neural Network이며 DFN에서 발전한 형태임.

Fully Connected로 인한 행렬 연산을 보다 효율적으로 할 수 있을까와, 사람이 보는 관점에서 보게 할 수 있을까에서 고안된 알고리즘.

 

이미지 처리에 주안을 둔 알고리즘이며, Convolution 연산 이후(3차원 이미지) DFN 알고리즘으로 넘어가기 위해 중간에서 convertion(1차원으로 변경)을 처리해 주는 플래튼 레이어( 또는 reshape을 한다)고 함.

노란색 부분이 이미지 소스이고 붉은색 부분이 결과 값이 나오는 부분.

 

얀르쿤 교수의 논문으로 처음 알려진 구조

 

- Convolutional Neural Network (CNN) -&nbsp;sparta coding club 참고
얀르쿤 교수의 CNN 논문내의 알고리즘 구조 이미지

 

 

 

- Generative Adversarial Network (GAN)

갠 모델 또는 GAN이라고 부르며, 

Generative 알고리즘으로 생성된 이미지와 Adversarial 알고리즘으로 생성된 이미지를 대립하게하여 더 나은 결과 값을 도출 할 수 있도록 함.

 

최초 고안자는 이 모델을 경찰과 지폐 위조범의 상황으로 표현하였으며, 

더 나은 위조지폐를 만드려고 하는 범인과 위조지폐를 진짜와 비교하여 더 빠르게 찾아내려고 하는 의미를 포함한다고 생각하면 됨.

 

Output를 생성하는 딥러닝 모델(Generator)을 학습시킬 때, Generator에 의해 출력한 데이터를 평가하는 딥러닝 모델(Discriminator)을 두어서, 서로간에 대적관계(Adversarial)를 통해서 경쟁하게 하는 알고리즘임.

 

즉, Generator는 Discriminator를 속이는 방향으로 학습을 진행하고,

Discriminator는 Generator의 거짓을 밝히는 방향으로 학습을 하며 모델의 완성도를 높이는 학습방법임.

 

예로서, 상처난 이미지를 복구하거나, 딥페이크 이지미 합성 등에 악용되기도 하며, 흑백으로만 된 이미지에 컬러를 입히는 기능등이 이에 해당 한다.

- Generative Adversarial Network (GAN)&nbsp;-&nbsp;sparta coding club 참고

 

 

 

[ Deep Learning 실습을 위한 VSCode 환경 구성 및 테스트 ]

위 글의 [ 학습에 필요한 환경 구성 ] 부분 참고

 

- VSCode 상의 python 코드

import cv2
import dlib
import tensorflow

print(cv2.__version__)
print(dlib.__version__)
print(tensorflow.__version__)

 

 

- VSCode 상에서 cmd or Ctrl + F5 키 또는 마우스 오른쪽 버튼 키를 눌러서 Run Python File in Terminal 메뉴를 눌러서 해당 코드를 수행.

더보기

(sparta_project) D:\SPARTA_WEEK1>D:/anaconda/envs/sparta_project/python.exe d:/SPARTA_WEEK1/main.py
2022-04-16 21:11:30.491676: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
2022-04-16 21:11:30.491789: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
4.5.5
19.23.1
2.8.0

(sparta_project) D:\SPARTA_WEEK1>

 

 

 

[ 이미지 처리 실습 - OpenCV로 이미지 보기 ]

- 실습용 이미지 다운 받아서 저장

테스트용 이미지를 다운받아서 현재 실습 중인 디렉토리 위치에 저장

(내경우는 D:\SPARTA_WEEK1 이나, 본인의 학습 디렉토리에 맞춰서 진행)

https://s3.ap-northeast-2.amazonaws.com/materials.spartacodingclub.kr/dl/week01/01.jpg

- 해당 패스에 이미지 확인이 안될 경우 아래 이미지 사용

저장된 이미지 원본

 

 

- 이미지 불러오기 python 코드

import cv2

img = cv2.imread('01.jpg')

print(img)
print(img.shape) #(404, 640, 3) = (높이, 너비, 채널)

 

 

- 코드 실행 결과

이미지를 3차원 수치값으로 표시

더보기

(sparta_project) D:\SPARTA_WEEK1> d: && cd d:\SPARTA_WEEK1 && cmd /C "D:\anaconda\envs\sparta_project\python.exe c:\Users\zookeepers\.vscode\extensions\ms-python.python-2021.8.1159798656\pythonFiles\lib\python\debugpy\launcher 1286 -- d:\SPARTA_WEEK1\main2.py "
[[[ 40  54  77]
  [ 36  50  73]
  [ 38  52  75]
  ...
  [ 60  73  99]
  [ 73  86 112]
  [ 64  77 103]]

 [[ 31  45  68]
  [ 37  51  74]
  [ 49  63  86]
  ...
  [ 72  85 111]
  [ 72  85 111]
  [ 66  79 105]]

 [[ 37  51  74]
  [ 43  57  80]
  [ 51  65  88]
  ...
  [ 57  69  93]
  [ 52  64  88]
  [ 56  68  92]]

 ...

 [[  7  19  43]
  [  8  20  44]
  [  9  21  45]
  ...
  [ 17  36  63]
  [ 16  36  61]
  [ 18  38  63]]

 [[  8  20  44]
  [  8  20  44]
  [  9  21  45]
  ...
  [ 22  41  68]
  [ 22  42  67]
  [ 23  43  68]]

 [[  8  20  44]
  [  8  20  44]
  [  8  20  44]
  ...
  [ 23  42  69]
  [ 23  43  68]
  [ 23  43  68]]]

(404, 640, 3)

(sparta_project) D:\SPARTA_WEEK1>

 

 

- 불러온 이미지를 창으로 띄워보기

import cv2

img = cv2.imread('01.jpg')

# print(img)
print(img.shape)  # (404, 640, 3) = (높이, 너비, 채널)

# 이미지를 창에 띄워보기
cv2.imshow('result', img)  # result는 이미지를 띄우는 창의 이름, img는 사전에 정의된 불어온 이미지 변수명
cv2.waitKey(0)  # 아무키나 입력 전까지 이미지를 계속적으로 띄워둔다.

 

 

- 결과 캡쳐화면

 

 

 

[ 이미지 처리 기초 실습 - 이미지 위에 도형 그리기 및 만져보기 ]

- 이미지 위에 사각 도형 및 원 그리기

import cv2

img = cv2.imread('01.jpg')

print(img)
print(img.shape)  # (404, 640, 3) = (높이, 너비, 채널)

cv2.rectangle(img, pt1=(259, 89), pt2=(380, 348), color=(
    255, 0, 0), thickness=2)  # 이미지 위에 사각형 그리기

cv2.circle(img, center=(320, 220), radius=100, color=(0, 0, 255), thickness=3) #이미지 위에 원 그리기

# 이미지를 창에 띄워보기
cv2.imshow('result', img)  # result는 이미지를 띄우는 창의 이름, img는 사전에 정의된 불어온 이미지 변수명
cv2.waitKey(0)  # 아무키나 입력 전까지 이미지를 계속적으로 띄워둔다.

 

 

- 결과 캡쳐화면

 

 

- 이미지 자르기(Crop)

import cv2

img = cv2.imread('01.jpg')

print(img)
print(img.shape)  # (404, 640, 3) = (높이, 너비, 채널)

cv2.rectangle(img, pt1=(259, 89), pt2=(380, 348), color=(
    255, 0, 0), thickness=2)  # 이미지 위에 사각형 그리기

cv2.circle(img, center=(320, 220), radius=100, color=(
    0, 0, 255), thickness=3)  # 이미지 위에 원 그리기

cropped_img = img[89:348, 259:380]  # 이미지 crop(자르기)

# crop된 이미지 띄우는
cv2.imshow('crop', cropped_img)

# 이미지를 창에 띄워보기
cv2.imshow('result', img)  # result는 이미지를 띄우는 창의 이름, img는 사전에 정의된 불어온 이미지 변수명
cv2.waitKey(0)  # 아무키나 입력 전까지 이미지를 계속적으로 띄워둔다.

 

 

- 결과 캡쳐화면

 

 

- 이미지 크기변경 (resize)

import cv2

img = cv2.imread('01.jpg')

print(img)
print(img.shape)  # (404, 640, 3) = (높이, 너비, 채널)

cv2.rectangle(img, pt1=(259, 89), pt2=(380, 348), color=(
    255, 0, 0), thickness=2)  # 이미지 위에 사각형 그리기

cv2.circle(img, center=(320, 220), radius=100, color=(
    0, 0, 255), thickness=3)  # 이미지 위에 원 그리기


img_resized = cv2.resize(img, (512,256)) # 이미지 resizing (x = 512픽셀만큼, y = 256 만큼 )

cropped_img = img[89:348, 259:380]  # 이미지 crop(자르기)


#Resize된 이미지를 띄워보기
cv2.imshow('resized', img_resized)

# crop된 이미지 띄우는
cv2.imshow('crop', cropped_img)

# 이미지를 창에 띄워보기
cv2.imshow('result', img)  # result는 이미지를 띄우는 창의 이름, img는 사전에 정의된 불어온 이미지 변수명
cv2.waitKey(0)  # 아무키나 입력 전까지 이미지를 계속적으로 띄워둔다.

 

- 결과 캡쳐 화면 (resized image)

 

- 이미지 Color 시스템

이미지 color 시스템은 색깔을 표현하는 방법들입니다. BGR(파랑색,초록색,빨간색)의 3가지 색깔을 섞어 표현하는 방법,

CMYK(하늘색,분홍색,노랑색,검정색) 4가지 색깔을 섞어 표현하는 법, RGB(빨간색,녹색,파란색) 3색을 섞어서 표현하는 방법등, 매우 다양한 컬러를 표현하는 시스템들이 있음.

CMYK 색상 조합

모델링을 만드는 사람마다 모델을 학습시키면서 가장 정확도가 좋았던 컬러 시스템을 사용하기 때문에, 다양한 컬러 시스템에 대해서 알고 있어야 하며, BGR,  Lab, RGB, CMYK 등등 다양한 컬러시스템의 활용법도 이해하면 도움이 된다.

 

 

 

- 이미지 Color 시스템 변경

# img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # color 시스템 변경 (BGR to RGB)

img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # color 시스템 변경 (BGR to Gray)

import cv2

img = cv2.imread('01.jpg')

print(img)
print(img.shape)  # (404, 640, 3) = (높이, 너비, 채널)

cv2.rectangle(img, pt1=(259, 89), pt2=(380, 348), color=(
    255, 0, 0), thickness=2)  # 이미지 위에 사각형 그리기

cv2.circle(img, center=(320, 220), radius=100, color=(
    0, 0, 255), thickness=3)  # 이미지 위에 원 그리기


# 이미지 resizing (x = 512픽셀만큼, y = 256 만큼 )
img_resized = cv2.resize(img, (512, 256))

cropped_img = img[89:348, 259:380]  # 이미지 crop(자르기)

img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # color 시스템 변경

cv2.imshow('result', img_rgb)
cv2.waitKey(0)

# Resize된 이미지를 띄워보기
cv2.imshow('resized', img_resized)

# crop된 이미지 띄우는
cv2.imshow('crop', cropped_img)

# 이미지를 창에 띄워보기
cv2.imshow('result', img)  # result는 이미지를 띄우는 창의 이름, img는 사전에 정의된 불어온 이미지 변수명
cv2.waitKey(0)  # 아무키나 입력 전까지 이미지를 계속적으로 띄워둔다.

 

- 이미지 Color 시스템 변경 결과

이미지의 컬러 시스템 변경에 따라 푸른색 계통으로 채워지는 배경이미지
이미지의 컬러 시스템 변경에 따라 회색 계통으로 채워지는 배경이미지

 

 

[ 이미지 처리 심화 실습 - 오버레이 ]

- 배경 이미지 위에 다른 이미지를 합성하기 (Overlay)

배경 이미지 위에 내가 원하는 이미지를 합성하는 방법.

 

 

 

- 이미지 준비하기

https://s3.ap-northeast-2.amazonaws.com/materials.spartacodingclub.kr/dl/week01/dices.png

위 링크에서 이미지를 가져오거나, 아래 이미지를 현재 작업 디렉토리(폴더)내에 복사 후 활용.

 

Overlay용 이미지

 

 

- 신규 테스트를 위한 main3.py 파일을 해당 작업 디렉토리에 만들고 아래의 코드를 입력한다.

실습은 기존 테스트용 휴대폰 이미지와 Overlay용 이미지를 사용하여 두 이미지를 어떻게 겹쳐지도록 하는지를 익히게 된다.

import cv2

img = cv2.imread('01.jpg')
overlay_img = cv2.imread('dices.png', cv2.IMREAD_UNCHANGED)

overlay_img = cv2.resize(overlay_img, dsize=(150, 150))

# 이미지 합성을 위한 alpha 채널값 조정 - 개념만 이해하고, 가져다 쓴다.
overlay_alpha = overlay_img[:, :, 3:] / 255.0   # 올려질 이미지의 alpha 채널값 조정 ,
# [높이: , 넓이:, 채널값:] 여기서 alpha 채널값이 3인 이유는
# 0(B채널)부터 시작해서 3이 alpha 채널값을 가짐.
# 해당 코드는 overlay_img 이미지에서 alpha 채널값만 잡아내서 255.0 값으로 나눔으로서
# 기본적으로 가진 alpha 값을 변수 처리화 하는 부분


background_alpha = 1.0 - overlay_alpha  # 배경이 될 이미지의 alpha 채널값 조정
# overlay_alpha 값을 가지고 있는 변수를 1.0에서 빼서 배경의 alpha 값을 변수 처리화함.

# 합성될 이미지가 올려질 위치 설정
x1 = 100
y1 = 100
x2 = x1 + 150  # overlay 이미지의 x축 크기값과 동일 해야 함.
y2 = y1 + 150  # overlay 이미지의 y축 크기값과 동일 해야 함.

# 배경 이미지와 overlay 이미지를 합성하는 코드, 이해하고 가져다 쓰자.
img[y1:y2, x1:x2] = overlay_alpha * overlay_img[:,
                                                :, :3] + background_alpha * img[y1:y2, x1:x2]

cv2.imshow("img", img)
cv2.waitKey(0)

 

- 처리 결과 물

합성된 이미지

 

 

- 투명도 채널의 추가에 대한 깨알 설명

아래는 일반적인 BGR 컬러 시스템의 채널에 대한 설명으로 높이값(픽셀), 너비값(픽셀), 색상값(3채널, 파랑, 녹색,빨강)에 대한 내용.

기본 BGR 컬러 시스템에 투명도를 표현하기 위한 alpha 채널이 추가되어 해당 이미지의 투명도를 처리해 줄 수 있다.

기본 BGR의 3채널 색상 시스템에 대한 개략도
Overlay를 위한 alpha(투명도를 표현하는) 채널이 추가된 BGR 색상 시스템

 

 

- Overlay 이미지 입장에서 생각해 보기

Overlay 이미지는 배경이 되는 부분의 alpha 채널 값을 0(검은색)으로 만들어서 주사위 부분을 색깔로 채워줘야 함.

주사위를 제외한 배경이 드러나지 않도록 처리

 

 

- 배경 이미지 입장에서 생각해 보기

배경 이미지는 주사위 부분의 alpha 채널값을 0(검은색)으로 만들어서 배경만 색상이 채워줘야 함.

 

 

- 이미지별 채널 값 수정 상태로 보기(option)

overlay_image = overlay_alpha * overlay_img[:, :, :3]

img[y1:y2, x1:x2] = background_alpha * img[y1:y2, x1:x2]

 

#cv2.imshow("img", img)
cv2.imshow("img", overlay_image)
cv2.imshow("img2", img)
import cv2

img = cv2.imread('01.jpg')
overlay_img = cv2.imread('dices.png', cv2.IMREAD_UNCHANGED)

overlay_img = cv2.resize(overlay_img, dsize=(150, 150))

# 이미지 합성을 위한 alpha 채널값 조정 - 개념만 이해하고, 가져다 쓴다.
overlay_alpha = overlay_img[:, :, 3:] / 255.0   # 올려질 이미지의 alpha 채널값 조정 ,
# [높이: , 넓이:, 채널값:] 여기서 alpha 채널값이 3인 이유는
# 0(B채널)부터 시작해서 3이 alpha 채널값을 가짐.
# 해당 코드는 overlay_img 이미지에서 alpha 채널값만 잡아내서 255.0 값으로 나눔으로서
# 기본적으로 가진 alpha 값을 변수 처리화 하는 부분


background_alpha = 1.0 - overlay_alpha  # 배경이 될 이미지의 alpha 채널값 조정
# overlay_alpha 값을 가지고 있는 변수를 1.0에서 빼서 배경의 alpha 값을 변수 처리화함.

# 합성될 이미지가 올려질 위치 설정
x1 = 100
y1 = 100
x2 = x1 + 150  # overlay 이미지의 x축 크기값과 동일 해야 함.
y2 = y1 + 150  # overlay 이미지의 y축 크기값과 동일 해야 함.

# 배경 이미지와 overlay 이미지를 합성하는 코드, 이해하고 가져다 쓰자.
# img[y1:y2, x1:x2] = overlay_alpha * overlay_img[:,
#                                                :, :3] + background_alpha * img[y1:y2, x1:x2]

overlay_image = overlay_alpha * overlay_img[:, :, :3]
img[y1:y2, x1:x2] = background_alpha * img[y1:y2, x1:x2]

#cv2.imshow("img", img)
cv2.imshow("img", overlay_image)
cv2.imshow("img2", img)
cv2.waitKey(0)

 

 

- 이미지별 채널 값 수정 상태로 보기(option) 결과

각 이미지 별로 alpha 채널값 처리를 한 상태로 보기

 

 

 

[ 동영상 처리 기본 실습 ]

- OpenCV로 동영상을 기본적으로 처리하는 방법을 익히고 배웁니다.

아래 링크에서 동영상을 다운로드해서 현재 작업중인 디렉토리(폴더)에 넣어 줍니다.

https://s3.ap-northeast-2.amazonaws.com/materials.spartacodingclub.kr/dl/week01/04.mp4

동영상 다운로드가 되지 않을 경우 아래의 원본 파일을 이용하면 됨.

04.mp4
1.79MB

신규 python 파일(main4.py)을 현재 작업중인 폴더에 만들고 아래의 코드를 작성합니다.

import cv2

cap = cv2.VideoCapture('04.mp4')

while True:
    # ret 의 값은 동영상이 종료되면 false 값이 됨. img에는 한장씩의 이미지가 입력됨.
    ret, img = cap.read()

    if ret == False:
        break

    cv2.imshow('result', img)  # 한장씩 입력된 img 데이터의 이미지를 화면에 나타내게 되는.

    # waitKey(100) 값이 100이면 100ms을 기다렸다가 다음 이미지를 불러오게 되는, q 키를 입력하면 프로그램 종료
    if cv2.waitKey(100) == ord('q'):
        break

위 코드는 04.mp4 동영상 파일의 한프레임(이미지 1장)씩 읽어서 화면에 출력해 주는 프로그램.

 

 

 

[ 동영상 처리 심화 실습 ]

- OpenCV로 동영상을 이미지로 처리하는 방법을 익히고 배웁니다. 영상 가지고 놀기

한 프레임(1장의 이미지)마다 특정 위치에 사각 박스를 그려주기

cv2.rectangle(img, pt1=(721, 183), pt2=(878, 465), color=(

        255, 0, 0), thickness=2)  # 한 프레임(사진 1장) 마다 특정 위치에 파란색 사각 박스를 그려주는 부분

import cv2

cap = cv2.VideoCapture('04.mp4')

while True:
    # ret 의 값은 동영상이 종료되면 false 값이 됨. img에는 한장씩의 이미지가 입력됨.
    ret, img = cap.read()

    if ret == False:
        break

    cv2.rectangle(img, pt1=(721, 183), pt2=(878, 465), color=(
        255, 0, 0), thickness=2)  # 한 프레임(사진 1장) 마다 특정 위치에 파란색 사각 박스를 그려주는 부분

    cv2.imshow('result', img)  # 한장씩 입력된 img 데이터의 이미지를 화면에 나타내게 되는.

    # waitKey(100) 값이 100이면 100ms을 기다렸다가 다음 이미지를 불러오게 되는, q 키를 입력하면 프로그램 종료
    if cv2.waitKey(100) == ord('q'):
        break

 

 

- 처리 결과

 

 

- 출력되는 영상을 흑백 처리

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 출력되는 영상을 흑백처리

import cv2

cap = cv2.VideoCapture('04.mp4')

while True:
    # ret 의 값은 동영상이 종료되면 false 값이 됨. img에는 한장씩의 이미지가 입력됨.
    ret, img = cap.read()

    if ret == False:
        break

    cv2.rectangle(img, pt1=(721, 183), pt2=(878, 465), color=(
        255, 0, 0), thickness=2)  # 한 프레임(사진 1장) 마다 특정 위치에 파란색 사각 박스를 그려주는 부분
    
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 출력되는 영상을 흑백처리

    cv2.imshow('result', img)  # 한장씩 입력된 img 데이터의 이미지를 화면에 나타내게 되는.

    # waitKey(100) 값이 100이면 100ms을 기다렸다가 다음 이미지를 불러오게 되는, q 키를 입력하면 프로그램 종료
    if cv2.waitKey(100) == ord('q'):
        break

 

 

- 처리 결과

 

 

- 동영상의 사이즈를 변경 하기

img = cv2.resize(img, dsize=(640, 360))  # 동영상의 크기를 변경

import cv2

cap = cv2.VideoCapture('04.mp4')

while True:
    # ret 의 값은 동영상이 종료되면 false 값이 됨. img에는 한장씩의 이미지가 입력됨.
    ret, img = cap.read()

    if ret == False:
        break

    cv2.rectangle(img, pt1=(721, 183), pt2=(878, 465), color=(
        255, 0, 0), thickness=2)  # 한 프레임(사진 1장) 마다 특정 위치에 파란색 사각 박스를 그려주는 부분

    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 출력되는 영상을 흑백처리

    img = cv2.resize(img, dsize=(640, 360)) # 동영상의 크기를 변경

    cv2.imshow('result', img)  # 한장씩 입력된 img 데이터의 이미지를 화면에 나타내게 되는.

    # waitKey(100) 값이 100이면 100ms을 기다렸다가 다음 이미지를 불러오게 되는, q 키를 입력하면 프로그램 종료
    if cv2.waitKey(100) == ord('q'):
        break

 

 

- 동영상 자르기

img = img[100:200, 150:250]  # 동영상 자르기

import cv2

cap = cv2.VideoCapture('04.mp4')

while True:
    # ret 의 값은 동영상이 종료되면 false 값이 됨. img에는 한장씩의 이미지가 입력됨.
    ret, img = cap.read()

    if ret == False:
        break

    cv2.rectangle(img, pt1=(721, 183), pt2=(878, 465), color=(
        255, 0, 0), thickness=2)  # 한 프레임(사진 1장) 마다 특정 위치에 파란색 사각 박스를 그려주는 부분

    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 출력되는 영상을 흑백처리

    img = cv2.resize(img, dsize=(640, 360)) # 동영상의 크기를 변경
    
    img = img[100:200, 150:250] # 동영상 자르기

    cv2.imshow('result', img)  # 한장씩 입력된 img 데이터의 이미지를 화면에 나타내게 되는.

    # waitKey(100) 값이 100이면 100ms을 기다렸다가 다음 이미지를 불러오게 되는, q 키를 입력하면 프로그램 종료
    if cv2.waitKey(100) == ord('q'):
        break

 

 

- 처리 결과

 

 

 

- 컴퓨터 웹캠을 통해 동영상 촬영하기

cap = cv2.VideoCapture(0) # 웹캠을 이용해 캡쳐

import cv2

# cap = cv2.VideoCapture('04.mp4') # 동영상 불러오기
cap = cv2.VideoCapture(0)  # 웹캠을 이용해 캡쳐

while True:
    # ret 의 값은 동영상이 종료되면 false 값이 됨. img에는 한장씩의 이미지가 입력됨.
    ret, img = cap.read()

    if ret == False:
        break

    cv2.rectangle(img, pt1=(721, 183), pt2=(878, 465), color=(
        255, 0, 0), thickness=2)  # 한 프레임(사진 1장) 마다 특정 위치에 파란색 사각 박스를 그려주는 부분

    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 출력되는 영상을 흑백처리

    img = cv2.resize(img, dsize=(640, 360))  # 동영상의 크기를 변경

    # img = img[100:200, 150:250]  # 동영상 자르기

    cv2.imshow('result', img)  # 한장씩 입력된 img 데이터의 이미지를 화면에 나타내게 되는.

    # waitKey(100) 값이 100이면 100ms을 기다렸다가 다음 이미지를 불러오게 되는, q 키를 입력하면 프로그램 종료
    if cv2.waitKey(100) == ord('q'):
        break

 

- 컴퓨터 웹캠을 통해서 촬영