카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2018/12/23

우분투 18.04 openCV Version 3.4.4

openCV Version 3.4.4 opencv(extra modules) 컴파일 후 우분투 18.04 설치 방법.

Ubuntu 18.04

python 버전 확인
python3 --version

python3 간단한 동작 확인
python3
>> print("오픈CV + 우분투 18.04!")
오픈CV + 우분투 18.04!
>> quit()

1 단계 : opencv 의존성 패키지 설치
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade

개발 도구 설치
sudo apt-get install build-essential cmake unzip pkg-config

OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다.
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요.
sudo apt-get install libgtk-3-dev

OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

OpenCV 내부의 메트릭스 기능과 같은 다양한 기능을 최적화하는 라이브러리 설치
sudo apt-get install libatlas-base-dev gfortran

파이썬 라이브러리 버전 설치
sudo apt-get install python3-dev

2 단계: OpenCV 소스코드 다운로드
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.4.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.4.zip

압축해제
unzip opencv.zip
unzip opencv_contrib.zip

opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다.
적극적으로 개발중인 모듈 및 또는 특허가있는 모듈이다.(상업적/산업적 용도로는 사용 가능하지 않음)
즉, contrib 모듈에 있는 건 비 상업적으로만 사용해야 한다.

또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함.
동일한 버전 다운로드

mv opencv-3.4.4 opencv
mv opencv_contrib-3.4.4 opencv_contrib

3 단계: Python 환결 설정.
파이썬 패키기 관린 pip 설치
cd ~
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

가상 개발 환경 구성
https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다.
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip

사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
:wq
로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc

가상 cv 환경 구축
mkvirtualenv cv -p python3

cv 가상 환경 확인
workon cv
(cv) username:~$

OpenCV 이미지 다차원 처리 NumPy 배열로 표현하며 최종 단계 숫자로 처리함.
pip install numpy

4 단계: OpenCV 컴파일.
가상 환경 접근
workon cv

컴파일
cd ~/opencv/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
-D BUILD_EXAMPLES=ON ..

OPENCV_ENABLE_NONFREE=ON 설정해 특허 알고리즘 사용 할 수 있도록 한다.

CMAKE 출력 파일 확인
Cmake 파일이 파이썬 인터프리터 등록 확인.
"Non-free algorithms" 이 "YES"로 설정되어 있는지 확인

참고
stdlib 관련된 오류 발생시 stdlib.h: No such file or
CMake : -D ENABLE_PRECOMPILED_HEADERS=OFF
이 경우에는 빌드 디렉토리를 삭제하고, 다시 빌드, 위의 옵션이 포함 된 CMake를 다시 실행하는 것이 좋다.
이렇게하면 stdlib.h 오류가 해결.

컴파일
make -j4
컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다.

실패시 기본 프로세서 정보로 컴파일
make clean
make

설치
sudo make install
sudo ldconfig

설치 확인
pkg-config --modversion opencv
3.4.4

5 단계: 설치 확인.
폴더 확인
ls /usr/local/python/cv2/python-3.6
cv2.cpython-36m-x86_64-linux-gnu.so

이름 변경.
cd /usr/local/python/cv2/python-3.6
sudo mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so

심볼 링크
cd ~/.virtualenvs/cv/lib/python3.6/site-packages/
ln -s /usr/local/python/cv2/python-3.6/cv2.so cv2.so

6 단계 : OpenCV 테스트
cd /home/username/
workon cv
python
Python 3.4.4
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.4.4'
>>>
--------------
파이썬 2.7를 설치 하려면,
1 단계가 끝나고 아래 명령어 실행.
sudo apt-get install python2.7 python2.7-dev
sudo python2.7 get-pip.py
mkvirtualenv cv -p python2.7

Ubuntu 16.04 OpenCV 3.1.0 및 Python 3.5 설치

우분투 OpenCV 3.1.0 및 Python 3.5 설치

Ubuntu 16.04

OpenCV 3.1.0 버전 Python 3 이상과 호환.
Python2.7.12 버전: 터미널 파이썬 실행 버전(우분투 기본 설치 버전)
Python3.5.2 버전: python3 명령을 통해 접근 할 수 있음.

두개를 동시에 사용해야 하므로, 동작 안하는 프로그램이 있을 수 있다.
이 문제는 env 환경 구성에서 python 정보를 직접 입력해 해결 하면된다.


1 단계 : opencv 의존성 패키지 설치
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade

개발 도구 설치
sudo apt-get install build-essential cmake git pkg-config

pkg-config: 패키지 설정 파일.
git : GitHub OpenCV 프로젝트 사이트 소스 코드 다운로드
cmake: 빌드 구성

OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다.
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.
sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev

로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요.
sudo apt-get install libgtk-3-dev

OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

OpenCV 내부의 메트릭스 기능과 같은 다양한 기능을 최적화하는 라이브러리 설치
sudo apt-get install libatlas-base-dev gfortran

파이썬 버전 설치
sudo apt-get install python2.7-dev python3.5-dev

2 단계: OpenCV 소스코드 다운로드
https://github.com/Itseez/opencv/archive/3.1.0.zip
https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip

cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip

opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다.
또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함.
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
unzip opencv_contrib.zip

동일한 버전 다운로드

3 단계: Python 환결 설정.
파이썬 패키기 관린 pip 설치
cd ~
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다.
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip

사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
:wq

cat 명령으로 환경 설정
echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.bashrc
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc

둘 중 편한 방법을 선택해 적용한다.
로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc

OpenCv 3.1 + Python 2.7 버전 개발을 위해, 가상 cv 환경 구축
mkvirtualenv cv -p python2

3.x 버전으로 만들 경우
mkvirtualenv cv -p python3

어떤 버전을 사용해도 상관은 없다.
최졍 cv python 가상 환경을 만드는게 목적이다.

cv 가상 환경 확인
workon cv
(cv) username:~$

OpenCV 이미지 다차원 처리 NumPy 배열로 표현하며 최종 단계 숫자로 처리함.
pip install numpy

4 단계: python 3.5 + OpenCV 컴파일.
가상 환경 접근
workon cv

컴파일
cd ~/opencv-3.1.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
    -D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
    -D BUILD_EXAMPLES=ON ..

stdlib 관련된 오류 발생시 stdlib.h: No such file or
CMake : -D ENABLE_PRECOMPILED_HEADERS=OFF
이 경우에는 빌드 디렉토리를 삭제하고, 다시 빌드, 위의 옵션이 포함 된 CMake를 다시 실행하는 것이 좋다.
이렇게하면 stdlib.h 오류가 해결.

CMAKE 출력 파일 확인
Cmake 파일이 파이썬3 버전 인터프리터 등록 확인.
Python 2:
Interpreter : /home/username/.virtualevns/cv/bin/python (ver 2.7.12)
Libraries : /usr/lib/x86_64-linux-gnu/libpython2.7.12~~~
numpy: /home/username/.virualenvs/cv/lib/python2.7.12/site.packages/numpy/core~~~~
packages path: lib/python2.7.12/site-packages

1. 컴파일 2.7 버전으로 가상환경 구축
2. 라이브러는 2.7 사용
3. NumPy 2.7 가상환경
4. 패키지 경로 cv2.so lib/python2.7/site-packages /usr/local/lib/python2.7/site-packages/

3.5 버전으로 컴파일 했을 경우
CMAKE 의 출력 내용은 3.5로 나타난다.

컴파일
make -j4
컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다.

실패시 기본 프로세서 정보로 컴파일
make clean
make

설치
sudo make install
sudo ldconfig

5 단계: 설치 확인.
Python2.7: 컴파일시.
ls -l /usr/local/lib/python2.7/site-packages/

심볼 링크
cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

Python3.5: 컴파일시.
ls -l /usr/local/lib/python3.5/site-packages/

동적 라이브러리가 이름이 변경되 고생 함.
cd /usr/local/lib/python3.5/site-packages/
sudo mv cv2.cpython-35m-x86_64-linux-gnu.so cv2.so

심볼 링크
cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so

6 단계 : OpenCV 테스트
python 3.5 구성시
cd /home/username/
workon cv
python
Python 3.5.2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>>

python 2.7 구성시
cd /home/username/
python
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>>
어떤한 파있너 버전을 사용해도 상관이 없다 cs2를 파이썬이 호출 하면된다.

ubuntu 14.04 python3.4 + OpenCV 3.0 개발 환경 구축 및 테스트

우분투 OpenCV 3.0 및 Python 3.4 설치

Ubuntu 14.04

OpenCV 3.0 버전 Python 3 이상과 호환.
Python 3.4 버전과 Python2.7 버전은 설치 방법은 다름.

1 단계 : 필수 구성 요소 설치
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade

개발 도구 설치
sudo apt-get install build-essential cmake git pkg-config

pkg-config: 패키지 설정 파일.
git : GitHub OpenCV 프로젝트 사이트 소스 코드 다운로드
cmake: 빌드 구성

OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다.
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.
sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev

로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요.
sudo apt-get install libgtk2.0-dev

OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

OpenCV 내부의 다양한 루틴 최적화 라이브러리 설치
sudo apt-get install libatlas-base-dev gfortran

2 단계: Python 설치 1
파이썬 패키기 관린 pip 설치
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다.
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.
sudo pip install virtualenv virtualenvwrapper

사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
:wq
로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc

OpenCv 3.0 + Python 3.4 비전 개발을 위해, 가상 cv 환경 구축
mkvirtualenv cv

2 단계: Python 설치 2
python 3.4 개발도구 설치
sudo apt-get install python3.4-dev

OpenCV 이미지 다차원 처리 NumPy 배열로 표현한다.
가상 개발 환경 CV에 설치 한다. 개발의 편의를 위해 imutils 설치
pip install numpy

cash 디렉토리 문제 발생 지우고 다시 설치
sudo rm -rf ~/.cache/pip/
pip install numpy

3 단계: python 3.4 + OpenCV 3.0 빌드
opencv 3.0 다운로드

cd ~
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0

opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다.
또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함.
cd ~
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.0.0

동일 버전 설이 3.0.0

빌드 설정:
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..

 -D INSTALL_C_EXAMPLES=OFF (보다는 ON).이 스위치를 켜 놓으면 오류가 발생할 수있는 OpenCV v3.1.0 CMake 빌드 스크립트에 버그가 있다.
 이 스위치를 off로 설정하면 CMake가 문제없이 실행됩니다.

CMAKE 출력 파일 확인
Cmake 파일이 파이썬3 버전 인터프리터 등록 확인.
Python 3:
Interpreter : /home/username/.virtualevns/cv/bin/python3.4 (ver 3.4)
Libraries : /usr/lib/x86_64-linux-gnu/libpython3.4~~~
numpy: /home/username/.virualenvs/cv/lib/python3.4/site.packages/numpy/core~~~~
packages path: lib/python3.4/site-packages

컴파일
make -j4

컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다.

설치
sudo make install
sudo ldconfig

4 단계
python3.4 설치 위치
/usr/local/lib/python3.4/site-packages

가상 개발 환경으로 심볼릭 링크
cd ~/.virtualenvs/cv/lib/python3.4/site-packages/
ln -s /usr/local/lib/python3.4/site-packages/cv2.cpython-34m.so cv2.so

심볼릭 링크가 잘 생성 되는지 확인한다. 만약 링크가 생성이 안되면 파일썬에서 OpenCV 호출 하지 못한다.

5 단계
python3.4 바인딩을 사용하여 OpenCV 3.0 설치 완료

가상 개발 환경 설치 확인

workon cv
python
>>> import cv2
>>> cv2.__version__
'3.0.0'

6 단계
테스트
색상이 있는 사진 한장 준비.

pip install imutils

vi find_image.py
# 필요한 패키지 가지고 오기
import numpy as np
import imutils
import cv2

# 이미지 로드
image = cv2.imread("test.jpg")

# 빨간색 이미지 찾기
upper = np.array([65, 65, 255])
lower = np.array([0, 0, 200])
mask = cv2.inRange(image, lower, upper)

# 마스크 된 이미지에서 윤곽선을 찾고 가장 큰 것을 유지
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)

# 윤곽율 근사 값
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.05 * peri, True)

# 빨간 색을 둘러싼 녹색 테두리 상자 그리기
cv2.drawContours(image, [approx], -1, (0, 255, 0), 4)
cv2.imshow("Image", image)
cv2.waitKey(0)

실행
python find_image.py

ubuntu 14.04 opencv3.0 + python 2.7 바인딩 개발 환경 구축 및 테스트

우분투 OpenCV 3.0 및 Python 2.7 설치

Ubuntu 14.04 

OpenCV 3.0 버전 Python 3 이상과 호환. 
Python 2.7 버전과 Python 3 이상 버전은 설치 방법은 다름. 

1 단계 
터미널 열기 ctrl + art + t
sudo apt-get update
sudo apt-get upgrade

2 단계
개발 도구 설치 
sudo apt-get install build-essential cmake git pkg-config

pkg-config: 패키지 설정 파일.
git : GitHub OpenCV 프로젝트 사이트 소스 코드 다운로드
cmake: 빌드 구성 

3 단계
OpenCV는 JPEG, PNG, TIFF등 디스크에 있는 이미지 파일을 로드 할 수 있다. 
디스크에 있는 이미지 파일을 로드 하려면 이미지 I/O 패키지가 필요함.

sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev

4 단계
로드 된 후 모니터 화면에 보여주기 위해서는 highgui 모듈, GUI에 의존하는 GTK 개발 라이브러리 필요. 

sudo apt-get install libgtk2.0-dev

5 단계
OpenCV 비디오 스트림 처리, 개별 프레임 접근 하기 위해 다음 라이브러리 설치 

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

6 단계
OpenCV 내부의 다양한 루틴 최적화 라이브러리 설치 

sudo apt-get install libatlas-base-dev gfortran

7 단계
파이썬 패키기 관린 pip 설치

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

8 단계
https://virtualenv.pypa.io/en/latest/ 및 https://virtualenvwrapper.readthedocs.io/en/latest/ 를 설치한다. 
이 두개의 패키지는 별도의 파이썬 버전과 개발 환경을 생성할 수 있게 한다.

sudo pip install virtualenv virtualenvwrapper
sudo rm -rf /home/username/.cache/pip

사용자 환경 설정.
vi /home/username/.bashrc
# virtualenv 및 virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
:wq

로그아웃 또는 재부팅, 아니면 source /home/username/.bashrc

OpenCv 3.0 + Python 2.7 비전 개발을 위해, 가상 cv 환경 구축

mkvirtualenv cv

9 단계
python 2.7 개발도구 설치 

sudo apt-get install python2.7-dev

OpenCV 이미지 다차원 처리 NumPy 배열로 표현한다. 
가상 개발 환경 CV에 설치 한다. 개발의 편의를 위해 imutils 설치

pip install numpy
pip install imutils

10 단계
opencv 3.0 다운로드 

cd ~
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0

opencv_contrib repo 설치, 설치 안 할 경우 표준 키보드의 키 위치를 감지 및 OpenCV 2.4.x 버전에서 사용한 SIFT, SURF 접근 할 수 없다. 
또한 자연 스러운 이미지 텍스트 감지와 같은 OpenCV 3.0 새로운 기능을 사용하지 못함. 

cd ~
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.0.0

빌드 설정 :

cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..

 -D INSTALL_C_EXAMPLES=OFF (보다는 ON).이 스위치를 켜 놓으면 오류가 발생할 수있는 OpenCV v3.1.0 CMake 빌드 스크립트에 버그가 있다. 
 이 스위치를 off로 설정하면 CMake가 문제없이 실행됩니다.

컴파일 

make -j4

컴파일 속도를 높이려면 현재 사용되는 컴퓨터의 프로세서 코어수를 넣어준다. 

설치
sudo make install
sudo ldconfig

11 단계
Python2.7 설치 위치 
/usr/local/lib/python2.7/site-packages

가상 개발 환경으로 심볼릭 링크 
cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

12 단계
python2.7 바인딩을 사용하여 OpenCV 3.0 설치 완료

가상 개발 환경 설치 확인

workon cv
python 
>>> import cv2
>>> cv2.__version__
'3.0.0'

13 단계 
테스트 
색상이 있는 사진 한장 준비. 

vi find_image.py
# 필요한 패키지 가지고 오기
import numpy as np
import imutils
import cv2
# 이미지 로드
image = cv2.imread("test.jpg")
# 빨간색 이미지 찾기
upper = np.array([65, 65, 255])
lower = np.array([0, 0, 200])
mask = cv2.inRange(image, lower, upper)
# 마스크 된 이미지에서 윤곽선을 찾고 가장 큰 것을 유지
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)
# 윤곽율 근사 값
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.05 * peri, True)
# 빨간 색을 둘러싼 녹색 테두리 상자 그리기
cv2.drawContours(image, [approx], -1, (0, 255, 0), 4)
cv2.imshow("Image", image)
cv2.waitKey(0)

실행
python find_image.py

윈도우 10 mmc card 설치

윈도우 10 mmc card 설치

BIOS 설정
fasb boot 설정 해제.
설정이 되어 있으면, grub> 모드로 진입 함.


windows_10_mmc_Boot 디렉토리, 현 테스트 중 버전 컴파일 및 실행
더욱 자세한건, 현재 작성중인 파일을 본다 03_config/windows_10_mmc_boot .

프로그램 설명.
"Ubuntu Windows To Go"는 USB 플래시 드라이브, 모바일 하드 드라이브 등과 같은 휴대용 장치에 Windows 설치하고, 다른 컴퓨터 하드웨어에서 운영체제 동작!
"USB 플래시 드라이브에서 Windows 동작"

요구 사항 :
16GB 이상의 USB 디스크 또는 MicroSD 카드 (Windows 10 Version 1703 CN에서는 더 이상 사용할 수 없음.)
UWTG 프로그램.
Windows 설치 이미지 (Windows7, Windows8, Windows8.1, Windows 10, Windows Server 2012, Windows Server 2012 R2)

1. 운영체제 이미지 iso 파일 로딩(윈도위 7 권장하지 않음), 윈도우 8은 ISO 파일을 두 번 클릭하여 수행 된다.

2. Ubuntu WTG Assistant lee_ubuntu_wintogo_test.exe을 실행, 영문 변경. 영어 번역을 할 시 GUI만 무거워 진다. 언어를 변경하면 POP-UP 프로그램이 다시 시작 된다, 하지만 수동으로 다시 실행 시켜 준다.

3. install.wim 선택
3.1 drive:\sources 가상 마운트 지정
3.2 설치 디스크 지정: USB 또는 MicroSD Card 여야 함.
3.3 오른쪽 사이트 창 Com 탭 선택
3.3.1 VHDX 및 Windows 10 Pro를 Ver 선택... 사용한 운영체제 버전 선택.
3.3.2 Option : UEFI + GPT 표시된다.
3.3.2.1: Options VHD 탭에서 슬라이더를 오른쪽으로 이동하여 VHD 파일의 이름을 변경하고 크기를 변경할 수 있음. 일부 옵션은 긴 문자로 처리되지만 수정할 필요 없음.
참고:  VHD 파티션 테이블 형식은 GPT이고 VHD Temp Folder는 현재 OS 임시 폴더에 있다.

4. Sys 탭에서 Fix Letter가 기본적으로 선택됨. 또한 이 VHD 시스템에서 부팅 할 때 Lcl 디스크 숨기기를 선택하여 로컬 디스크를 숨 긴다.
(optional) Disk (디스크)탭 아래에 No temp (임시 없음) 옵션이 있다.이 옵션은 이동식 디스크에 직접 VHD를 만드는 것을 의미한다. 장치의 하드웨어 인터페이스 부분이 빠르다면 시간이 절약 된다.

5. GO 선택, 두개의 경고창 생성, 확인 확인 눌러 넘어간다.

6. 대기
(optional) PRO 사용자의 경우 64GB MicroSD 카드에서 파티션 구조는 64GB.
VHD 파일, EFI 파티션 ~ 100MB(EFI 부팅 파일 저장 공간) 및 예비 파티션(~ 4.5GB)을 저장하는 기본 파티션이 있다.
하드디스크 공간 낭비를 하고 싶지 않을 경우에 EFI 파티션을 끝으로 옮기고 4.5 GB 공간을 메인 파티션에 병합한다.
경고: 잘못된 조작으로 인해 데이터가 손실 될 수 있습니다!

여기 까지 완전하게 진행 됨.

UDoo x86 이동

7. BIOS 또는 부팅 선택 모드가 장치에서 지원 한 다면, EFI SD/MMC card(AFGCE)를 선택.
부팅 프로세스 시작

8. 초기화가 시작. 일부 지역 설정 및 개인 정보, 합의 ...... 일반적인 Windows 10 설치 프로세스임.

9. 기본 윈도우 설치 완료

10. 정품 인증 재 설치
11. 내부 eMMC 오프라인 파일 관리자에서 볼 수 없음.
MicroSD Card의 VHD는 운영체제 C:\ 드라이버로 마운트 된다.
이러한 방식으로 보안을 강화 시킨다.

12. 윈도우 스토어 사용 가능

13. 그랙픽 드라이버 설치 후, 세이프 모드 동작, HDMI 동작

참고: UDOO X86은 MicroSD Card를 직접 부팅 할 수 없어 블루 스크린이 표시된다.
이럴때는 UEFI 펌웨어 옵션을 일부 수정했냐 한다.

super + I  Windows 설정.
업데이트 및 보안 을 클릭

복구 탭을 클릭한 다음, 오른쪽의 고급 시작 옵션의 아래에 있는 지금 다시 시작 버튼을 클릭.
PC를 다시 시작하면, 옵션 선택 화면에서 문제 해결을 클릭.
고급 옵션 화면에서, UEFI 펌웨어 설정 클릭.

1다시 시작 버튼을 클릭하여 UEFI (BIOS) 부팅 모드로 전환.

BIOS 진입 (Boot)화면에 나타나며, 레거시 모드로 되어 있다면 1 UEFI부팅 모드로 전환한 후, BIOS 설정을 저장하고 PC를 재 부팅.

2018/12/22

16 진수 읽기

Little Endian Format 

헥사 에디터
- 두 자리 수의 집합 = 1 byte(8 bits)
16 진수 D3은 이진수 11010011 

10 진수와 혼동을 피하기 위해 0x를 사용해 표시
- 0x30

Little Endian format 오른쪽에서 왼쪽으로 읽음. 
- 03 04 little endian format 0403으로 읽음 .
-  0x0403은 0x403으로 표시하며 앞의 0들은 다 제거.

예 1: 
- 00 04 00 00 Little Endian Format
- 00000400 16 진수 정렬 표현
- 0x400
- 10 진수 1024 형식 표현 

예 2:
- 60 00 Little Endian Format
- 0060 16진수 정렬 표현
- 0x60
- 10 진수 96 형식 표현

예 3: 
- D3 04 Little Endian Format
- 04D3 16진수 정렬 표현
- 0x4D3
- 10 진수 1235 형식 표현

NTFS 파일 시스템 섹터


NTFS 파일 시스템 및 파티션

파티션의 처음 16 섹터 (0-15)

섹터 0(부트 스트랩 코드)
- 점프 지시
- OEMID
- 바이오스 매개변수 블록(BPB)
- 확장 된 BPB
- 부트 스트랩 코드
- 섹터 마커의 끝

섹터 1-15 (부트 섹터 초기 프로그램 로더)

NTFS Master File Table(MFT)
12.5% MFT를 위한 예약된 디스크 공간.
디스크 공간의 50% 까지 확장 가능
모든 파일 및 폴더의 정보가 MFT에 나열.

파일 기록
- FILE0(ASCII) 기록
- 섹터 길이는 1024 바이트(512 x 2)
- 파일 속성 포함:

메터데이터 헤더:
  • 0x10 Attribute: 파일 생성, 생성 날자 및 변경 업데이트 시간
  • 0x20 Attribute: 비거주 속성
  • 0x30 Attribute: 짥고 긴 파일 이름
  • 0x40 Attribute: 소유권 및 접근권한
  • 0x50 Attribute: 파일에 대한 접근 권한 목록
  • 0x70 Attribute: 볼륨의 버전 및 상태
  • 0x80 Attribute: 비거주 클러스트의 상주파일 번호
  • 0x90 Attribute: 폴더 및 루트 인덱스
  • 0xA0 Attribute: 폴더 및 인덱스 할당
  • 0XB0 Attribute: 폴더 및 인데스 비트
  • 0XC0 Attribute: Volume mount 위치
  • 0xD0 Attribute: OS/2 HPFS
  • 0xE0 Attribute: OS/2 HPFS
  • 0x100 Attribute: EFS Windows 사용.

NTFS Data
비거주 파일에 대한 파일 정보
- 상주 파일이 512 보다 작의면 MFT에 저장
- 비거주 파일이 크면 MFT에 저장할 수 없음.

boot Secotor
MFT
Data










16 진수 헥사 편집기

16 진수 편집기 .

파일 또는 디스크 파티션의 1과 0을 읽고 이를 16 진수 형식으로 변환한다.
헥사 에디터를 사용해 ASCII 텍스트를 해석하고 표시한다.

16 진수:
0,1,2,3,4,5,6,7,8,9.A,B,C,D,E,F

16 진수 하나의 값은 8 비트 집합을 나타냄.
Example: 3F = 00111111

8 bits = 1byte

EB = 1 byte
EB = 8 bit
EB = 11101011

헥사 에디터 창 배치 정보
왼쪽: 메모리 주소
중간: 16진수 값
오른쪽: ASCII

헥사 에디터 종류
Hexedit(console)
 - sudo apt-get install hexedit

Tweak(console)
 - sudo apt-get install tweak

Ghex(GUI)
 - sudo apt-get install ghex

Okteta(GUI)
 - sudo apt-get install okteta
 - 우분투 KDE 버전 포함

WxHexeditor(GUI)
 - Download : Https://sourceforge.net/projects/wxhexeditor/
 - 개발 베타 버전

Bless(GUI)
 - sudo apt-get install bless

헥사 계산기 진법 계산.

Calculator
16 진수 AD 입력 8진수 255, 10진수 173 확인,
2진수 바이너리 표시 


16 진수 AD 입력 8진수 255, 10진수 173

파일 복구


1. 파일 조각.

이미지 파일, 파티션 또는 하드 드라이브에서 메타 데이터가 아닌 헤더(머리 글) 정보와, 끝(바닥 글) 기반으로 파일을 검색.

NTFS 파티션
부트섹터

메타
데이터
파일 1


파일 2

파일 3

MFT





마스트 파일 표(MFT).
MFT는 모든 파일과 폴더에 대한 정보를 NTFS 볼륨에 저장.

메타 데이터
메타 데이터에는 일반적으로 파일 이름, 만든 날짜, 마지막으로 수정 한 날짜, 사용 권한, 디스크에 있는 파일 위치 등이 포함됨.

2. 리눅스 용 파일 조각 모음 및 복구 유틸
  • Foremost
  • Scalpel
  • Magic Rescue
  • Photorec
  • Recoverjpeg
  • Extundelete
  • Ntfsundelete
  • Scrounge-ntfs
3. 확장자 지정 이미지 파일 복구.
shell> sudo apt-get install foremost
shell> man foremost
-t : 형식
-i : 입력
-o : 출력
복구 가능한 파일 확장자 나열.

파티션 이미지 복사
shell> sudo dc3dd if=/dev/sdc1 of=/home/username/Desktop/flashdriver.img

shell>foremost -t jpg, png, gif -o flashoutput -i flashdrive.img
flashoutput 디렉토리 생성.

gif, png, gif 지정 확장자 파일 복구 확인.

3.1. 하드디스크 파일 복구
shell> sudo fdisk -l
shell> sudo foremost -t zip,doc,pdf -o ntfsoutput -i /dev/sdx1
ntfoutput 디렉토리 생성

shell> chmod 777 ntfoutput

4. scalpel을 이용한 파일 복구
shell> sudo apt-get install scalpel
shell> man scalpel

-c : 구성파일 호출
-o : 출력 디력토리 이름

shell> sudo cp /etc/scalpel/scalpel.conf ./

shell> vi scalpel.conf
복구 하고 싶은 파일 확장자 주석 제거.

파티션 이미지 복사
shell> sudo dc3dd if=/dev/sdc1 of=/home/username/Desktop/flashdriver.img

파일 복구
shell> scalpel -c scalpel.conf -o fileshoutput flashdrive.img

shell> sudo fdisk -l
파티션 정보 확인

NTFS 하드디스크 파일 복구
shell> sudo scalpel -c scalpel.conf -o ntfsoutput /dev/sdx1
shell> sudo chmod 777 ntfsoutput

환경설정 설정한 복구 파일 복원.

5. magicrescue 사용 파일 복구.
shell> sudo apt-get install magicrescue
shell> man magicrescue

-d : 출력 디렉토리
-r : 레시피
-M : 원하는 출력물 생성

기본적으로 지원하는 파일 형식.
shell> ls /usr/share/magicrescue/recipes
avi elf gpl jpeg-exif mbox mbox-mozilla-sent mp3-id3v2 nikon-raw png sqlite
canon-cr2 flac gzip jpeg-jfif mbox-mozilla-inbox mp3-id3v1 msoffice perl ppm zip

shell> mkdir output
shell> magicrescue -f jpeg-exif -r jpeg-jfif -r png -d output/ -M io flashdrive.img > log

shell> mkdir output2
shell> sudo fdisk -l
파티션 정보 확인 NTFS

shell> sudo magicrescue -r jpeg-exif -d output2 -M io /dev/sdx1 > log2
shell> sudo chmod -R 777 output2

6. 외장 디스크(sd, m-sd, usb) 사진 jpg 복구
shell> sudo apt-get install recoverjpeg

shell> mkdir output
shell> cd output
shell> sudo fdisk -l
윈도우 NTFS 확인

shell> sudo recoverjpeg /dev/sdx1
shell> sudo chmod 777 ./output

해쉬 알고리즘을 사용한 리눅스 CLI.

파일 또는 문자열들을 디스크 가져 와 해시 알고리즘을 통해 해시 값을 생성.

데이터 무결성 확인.
- 복사 된 항목이 원본과 정확히 일치하는지 확인.
- 원래 항목이 손상되지 않았는지 확인.

자주 사용되는 해싱 알고리즘.
- MD5(Message Digest 5)
- SHA-1(보안 해쉬 알고리즘)
- SHA-2(SHA-244, SHA-256, SHA-384, SHA-512)

String, 파일, or Disk -----> 알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431dkf


파일 1 ----->   알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431dkf
copy of 파일1-> 알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431dkf
파일 2 ----->   알고리즘: MD5, SHA-1, or SHA-2 -----> 해쉬 값: 83e431ee8

HASHING TOOLS해싱 도구
GNU Coreutils(md5sum)
- 우분투 기본 설치

md5deep
- sudo apt-get install md5deep
- 재귀 적으로 전체 디렉토리 트리 검사.
- 해시 목록을 수락하고 입력 파일 집합과 비교.
- 예상 시간을 산출.

ssdeep
- sudo apt-get install ssdeep
- Fuzzy-hashing

GNU Coreutils
- md5sum : md5 합을 사용하여 해시 생성.
- sha1sum : sha1 합을 사용하여 해시 생성.
- sha256sum : 가장 많이 사용. sha256 합을 사용하여 해시 생성.

md5deep : 해쉬값 모음
- sd5deep 
- sha1deep
- sha256deep
- tigerdeep
- whirlpooldeep

ssdeep
- ssdeep

MD5
- 128-bit 해쉬 값 생성
- 알려진 충돌로 인해 취약.
-- forensics에 좋음 
-- 암호화 보안 좋지 않음. 

SHA-1
- 160-bit 해쉬 값 생성
- 알려진 충돌이 없지만 이론적인 충돌있음

SHA-2
- 244, 256, 384, or 512 bit 해쉬 값 생성
- SHA-1 또는 MD5와 같이 널리 사용되지 않음.
- SHA-2 SHA-256 및 SHA-512가 가장 많이 사용 SHA-2.

shell> touch file1 file2

md5 파일 적용
shell> md5sum file1
d41d8cd98f00b204e9800998ecf8427e  file1
shell> mod5sum file2
d41d8cd98f00b204e9800998ecf8427e  file2

파일 변경.
shell> vi file2
This is a Test.

변경된 파일 md5 적용.
shell> mod5sum file2
66d64d41eb16e6eb4efc10480e52239a  file2

변경 전 후 해쉬 값 바교
file2 변경전 해쉬값: d41d8cd98f00b204e9800998ecf8427e  file2
file2 변경후 해쉬값: 66d64d41eb16e6eb4efc10480e52239a  file2

해쉬 값 정보 저장
shell> md5sum file1 > hash.txt
shell> md5sum file2 >> hash.txt

shell> cat hash.txt
d41d8cd98f00b204e9800998ecf8427e  file1
66d64d41eb16e6eb4efc10480e52239a  file2

sha1sum 해쉬 값 길이
shell> sha1sum file1 >> hash.txt

sha256sum 해쉬 값 길이
shell> sha256sum file >> hash.txt

해쉬값 표현 길이 차이 확인
shell> cat hash.txt
d41d8cd98f00b204e9800998ecf8427e  file1
66d64d41eb16e6eb4efc10480e52239a  file2
da39a3ee5e6b4b0d3255bfef95601890afd80709  file1
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  file1


shell> sudo fdisk -l

하드디스크 파티션 md5sum 확인(소요 시간 있음)
shell> sudo md5sum /dev/sdc1 >> hast.txt

shell> cat hast.txt

hash 세션 구문 추가.
shell> cat hash.txt

해쉬 값 생성.
shell> md5deep file1 >> hash.txt
shell> md5deep file2 >> hash.txt
shell> sha1deep file1 >> hash.txt
shell> sha256deep file1 >> hash.txt
shell> tigerdeep file1 >> hash.txt
shell> whirlpooldeep file1 >> hash.txt
shell> sudo md5deep -e /dev/sdc1 >> hash.txt

해쉬 생성 값 표현 길이 확인.
shell> cat hash.txt

파티션 정보 확인.
shell> sudo fdisk -l

이미지 생성.
shell> sudo dc3dd if=/dev/sdc1 of=/home/username/Desktop/flash.img

실행 권한.
shell> sudo chmod 777 flash.img

해시값 생성.
shell> md5deep -e flash.img > hash1.txt
shell> sudo md5deep -e /dev/sdc1 >> hash1.txt

생성된 해시 값 확인.
shell> cat hast1.txt

원본 파티션 파일 변경
shell> cd /media/username/Backup/
shell> vi 기본_텍스트파일.txt
This is a Test.

변경된 파일 해쉬 값 생성.
shell> sudo md5deep -e /dev/sdc1 >> hash1.txt

변경 해쉬 값 확인
shell> cat hash1.txt

shell> ssdeep flash.img > fuzzyhash.txt
shell> sudo ssdeep /dev/sdc1 >> fuzzyhash.txt

이미지와 파일 변경 사항 해시 값 확인
shell> ssdeep flash.img > fuzzyflash
shell> sudo ssdeep -m fuzzyflash /dev/sdc1

dd 디스크 이미지 덤프 gzip 압축.

 dd(Disk Dump)
- 기본 패키지 설치 됨

dcfldd(국방 컴퓨터 법의학 연구소)
- sudo apt-get install dcfldd
- dd 명령에서 fork 함.

dc3add(방위 사이버 범죄 센터)
- sudo apt-get install dc3dd
- dd 명령어 사용 하며 기능 추가

필수 옵션
- if="device/image"
example: if=/dev/sda
- of="/device/image"
example: of=/home/user/copy.img

파티션 정보 덮어쓰기

파티션 Linux ext4
shell> sudo fdisk -l
Disk /dev/mmcblk0: 58.6 GiB, 62881005568 bytes, 122814464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x524b0d66

Device         Boot Start       End   Sectors  Size Id Type
/dev/mmcblk0p1       2048 122814463 122812416 58.6G 83 Linux

파티션 NTFS
Disk /dev/sdc: 14.5 GiB, 15504900096 bytes, 30283008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09bd599f

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdc1        2048 30281727 30279680 14.4G  7 HPFS/NTFS/exFAT


shell> sudo dc3dd if=/dev/sdc of=/dev/mmcblk0p1

dc3dd 7.2.646 started at 2018-12-22 00:14:00 +0900 ---> 시작 시간
compiled options:
command line: dc3dd if=/dev/sdc of=/dev/mmcblk0p1
device size: 30283008 sectors (probed),   15,504,900,096 bytes
sector size: 512 bytes (probed)
 15504900096 bytes ( 14 G ) copied ( 100% ), 14882 s, 1017 K/s             

input results for device `/dev/sdc':
   30283008 sectors in
   0 bad sectors replaced by zeros

output results for device `/dev/mmcblk0p1':
   30283008 sectors out

dc3dd completed at 2018-12-22 04:22:02 +0900  ---> 종료 시간
총 4시간 30분 걸림.

여기 테스트는 하드 디스크 크기가 같지 않으므로 제대로 인식하지 않음.
동일한 크기를 가지는 USB 저장 장치가 있으면 된다.
shell> sudo fdisk -l

Disk /dev/mmcblk0: 58.6 GiB, 62881005568 bytes, 122814464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x524b0d66

Device         Boot Start       End   Sectors  Size Id Type
/dev/mmcblk0p1       2048 122814463 122812416 58.6G 83 Linux ----> 기존 값 그대로


Disk /dev/sdc: 14.5 GiB, 15504900096 bytes, 30283008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09bd599f

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdc1        2048 30281727 30279680 14.4G  7 HPFS/NTFS/exFAT ---> 기존 값 그대로

파티션 이미지 복사
shell> sudo dc3dd if=/dev/sdc1 of=/home/username/Desktop/flashdriver.img
dc3dd 7.2.646 started at 2018-12-22 06:24:04 +0900
compiled options:
command line: dc3dd if=/dev/sdc1 of=./flashdriver.img
device size: 1953792 sectors (probed),    1,000,341,504 bytes
sector size: 512 bytes (probed)
  1000341504 bytes ( 954 M ) copied ( 100% ),  892 s, 1.1 M/s               

input results for device `/dev/sdc1':
   1953792 sectors in
   0 bad sectors replaced by zeros

output results for file `./flashdriver.img':
   1953792 sectors out

dc3dd completed at 2018-12-22 06:38:56 +0900

shell> sudo chmod 777 flashdriver.img

gzip 이미지 복사.
shell> sudo dc3dd if=/dev/sdc1 | gzip -6 > /home/username/Desktop/zippedflash.gz
옵션
-6 : 압축률 평균
-9 : 압출률 작게

zip 압축해제
shell> gunzip zippedflash.gz

2018/12/21

long 형의 변수 선언 키워드 크기 확인

#include <stdio.h>

int main(void){
int a;
long b;
long long c;

double e;
long double f;

printf("Size of int = %ld bytes\n", sizeof(a));
printf("Size of long = %ld bytes\n", sizeof(b));
printf("Size of long long = %ld bytes\n", sizeof(c));

printf("Size of double = %ld bytes\n", sizeof(e));
printf("Size of long double = %ld bytes\n", sizeof(f));

return 0;
}

컴파일 변수 형식의 크기 확인

include <stdio.h>

int main(void){
int integerType;
float floatType;
double doubleType;
char characterType;

// Sizeof 연산자는 변수의 크기를 계산하는 데 사용된다
printf("Size of int: %ld bytes\n", sizeof(integerType));
printf("Size of float: %ld bytes\n", sizeof(floatType));
printf("Size of double: %ld bytes\n", sizeof(doubleType));
printf("Size of char: %ld bytes\n", sizeof(characterType));

return 0;
}

8진수 2진수 변환

#include <stdio.h>
#include <math.h>

long long convertOctalToBinary(int octalNumber);
int main(void){
int octalNumber;

printf("Enter an octal number: ");
scanf("%d", &octalNumber);

printf("%d in octal = %lld in binayr", octalNumber, convertOctalToBinary(octalNumber));

return 0;
}

long long convertOctalToBinary(int octalNumber){
int decimalNumber = 0, i = 0;
long long binaryNumber = 0;

while(octalNumber != 0){
decimalNumber += (octalNumber%10) * pow(8, i);
++i;
octalNumber /= 10;
}

i = 1;

while(decimalNumber != 0){
binaryNumber += (decimalNumber % 2) * i;
decimalNumber /= 2;
i *= 10;
}

return binaryNumber;
}

8 진수 입력: 67
2 진수 110111

8진수 10진수 변환

#include <stdio.h>
#include <math.h>

long long convertOctalToDecimal(int octalNumber);
int main(void){
int octalNumber;

printf("Enter an octal number: ");
scanf("%d", &octalNumber);

printf("%d in octal = %lld in decimal\n", octalNumber, convertOctalToDecimal(octalNumber));
return 0;
}

long long convertOctalToDecimal(int octalNumber){
int decimalNumber = 0, i = 0;

while(octalNumber != 0){
decimalNumber += (octalNumber%10) * pow(8,i);
++i;
octalNumber /= 10;
}

i = 1;

return decimalNumber;
}

8 진수를 입력: 116
10 진수 = 78

2진수 10진수 변환

#include <stdio.h>
#include <math.h>

int convertBinaryToOctal(long long binaryNumber);
int main(void){
long long binaryNumber;

printf("Enter a binary number: ");
scanf("%lld", &binaryNumber);

printf("%lld in binary = %d in octal\n", binaryNumber, convertBinaryToOctal(binaryNumber));
return 0;
}

int convertBinaryToOctal(long long binaryNumber){
int octalNumber = 0, decimalNumber = 0, i = 0;

while(binaryNumber != 0){
decimalNumber += (binaryNumber%10) * pow(2,i);
++i;
binaryNumber /= 10;
}

i = 1;

while(decimalNumber != 0){
octalNumber += (decimalNumber %8) * i;
decimalNumber /= 8;
i *= 10;
}

return octalNumber;
}

이진수 입력 : 101001
8 진수로 51

10진수 8진수 변환

#include <stdio.h>
#include <math.h>

int convertDecimalToOctal(int decimalNumber);
int main(void){
int decimalNumber;

printf("Enter a decimal number: ");
scanf("%d", &decimalNumber);

printf("%d in decimal = %d in octal\n\n", decimalNumber, convertDecimalToOctal(decimalNumber));

return 0;
}

int convertDecimalToOctal(int decimalNumber){
int octalNumber = 0, i = 1;

while(decimalNumber != 0){
octalNumber += (decimalNumber % 8) * i;
decimalNumber /= 8;
i *= 10;
}
return octalNumber;
}

십진수를 입력: 78
8 진법에서 116

비트, 바이트, 진법 표현 범위

1. 비트 연산자
AND Gate = &
OR Gate = |
XOR Gate = ^
NOT Gate = ~ -> 단항 연산자.

쉬프트 연산자: <<, >>

2. 컴퓨터 정보 단위

2.1 종류
8bit(비트) = 1byte(바이트) // 8bit=1Byte
1024Byte(2^10 byte) = 1KB(킬로 바이트)
1024KB(2^10 KB) = 1MB(메가 바이트)
1024MB(2^10 MB) = 1GB(기가 바이트)
1024GB(2^10 GB) = 1TB(테라 바이트)

2.2 비트
비트(bit) : 하나의 0 또는 1. 디지털 정보의 최소 단위. 하나의 비트로는 2가지 구분되는 내용을 표현할 수 있다.

1bit:2**0:2x0=1:|-
2bit:2**1:2x1=2:|- |-
3bit:2**2:2x2=4:|- |- |- |-
4bit:2**3:2x2x2=8:|- |- |- |- |- |- |- |-
5bit:2**4:2x2x2x2=16: |- |- |- |- |- |- |- |- |- |- |- |- |- |- |- |-
6bit:2**5:2x2x2x2x2=32: ... |(ON) -(OFF) 32개...
7bit:2**6:2x2x2x2x2x2=64: ... |(ON) -(OFF) 64개...
8bit:2**7:2x2x2x2x2x2x=128: ... |(ON) -(OFF) 128개...

1bit, 스위치 1개로 두가지 상태 표현 : 01
2bit, 스위치 2개로 네가지 상태 표현 : 00, 01, 10, 11

전압 차이의 비트 표현
3.3V: 1
0.0V: 0

2.3 바이트
8bit:1Byte
바이트(byte) : 8비트. 1바이트로는 256가지로 구분되는 내용을 표현할 수 있다.

컴퓨터의 기억장치의 크기를 나타내는 단위
ASCII CODE 표의 문자 하나를 나타낼 수 있는 단위.

2.3.1 ASCII
수와 문자를 짝지어주는 표, ‘A’는 십진수 65에 의해 표현된다.
7비트 ASCII는 128개의 문자 표현, 이후 256가지의 문자를 표현할 수 있도록 8비트로 확장.

2.4 진법
2진법, 8진법, 10진법, 16진법.

2.5 2진법
컴퓨터의 CPU 인식 할 수 있는 단위.
2진법(binary):0과 1이라는 2가지의 숫자의 나열을 통해 수를 표현하는 체계

2.6 8진법
8진법(Octal):  0부터 7까지 총 8 가지의 숫자의 나열을 통해 수를 표현하는 체계

3bit 표현

2.7 10진법
10진법(decimal) : 0부터 9까지 10가지의 숫자의 나열을 통해 수를 표현하는 체계

2.7 16진법
16진법(hexadecimal): 0, 1 ... 9, a, b, c, d, e, f 총 16가지의 숫자의 나열을 통해 수를 표현하는 체계
4bit = 니블(nibble) 표현.
현대의 메모리 0x 주소의 표현 단위

theme 테마 설치

아래 패키지를 설치한 후 로그아웃 후 우분투에서 지원하는 여러개의 테마가 보인다.
$ sudo snap install communitheme

제한 추가 기능 해재. Restricted Extras
$ sudo apt update
$ sudo apt install ubuntu-restricted-extras
$ sudo apt --no-install-recommends install libdvd-pkg
$ sudo dpkg-reconfigure libdvd-pkg

웹 브라우저에 gnome 셜을 설치한다.
$ sudo apt install chrome-gnome-shell