Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- vscode
- 영상 복사
- OpenCV 입문
- nameWindow
- cvtColor
- opencv-python
- 파이썬 설정
- OpenCV
- 파티라이트
- OpenCV 초급
- OpenCV 기초
- 영상 생성
- python-opencv
- openCV 실습
- 고릴라캠핑
- VScode Python
- 영상 추출
- matplotlib
- imwrite
- 제드파티라이트
- 고릴라캠핑TV체험단
- Python 환경설정
- imread
- 스프링역사
- OpenCV 예제
- python 3.7.7
- VScode 환경설정
- numpy.ndarray
- 고릴라캠핑TV
- Python
Archives
- Today
- Total
코딩. 캠핑
OpenCV Python 입문(5) - 영상 생성, 복사, 부분 추출 본문
지정한 크기로 새 영상 생성하기
numpy.empty(shape, dtype = float, ...) -> arr
numpy.zeros(shape, dtype = float, ...) -> arr
numpy.ones(shape, dtype = None, ...) -> arr
numpy.full(shape, fill_value, dtype = None, ...) -> arr
- shape : 각 차원의 크기. (h, w) 또는 (h, w, 3)
- dtype : 원소의 데이터 타입. 일반적인 영상이면 numpy.uint8 지정
- arr : 생성된 영상 (numpy.ndarray)
- numpy.empty() : 임의의 값으로 초기화된 배열을 생성
numpy.zeros() : 0으로 초기화된 배열을 생성
numpy.ones() : 1로 초기화된 배열을 생성
numpy.full() : fill_value로 초기화된 배열을 생성
이제 실습을 해봅시다.
import numpy as np
import cv2
# 새 영상 생성하기
img1 = np.empty((240, 320), dtype=np.uint8) # 그레이 스케일
img2 = np.zeros((240, 320, 3), dtype=np.uint8) # 트루 컬러
img3 = np.ones((240, 320, 3), dtype=np.uint8) # 트루 컬러
img4 = np.full((240, 320), 128, dtype=np.uint8) # 그레이 스케일
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)
cv2.imshow('img4', img4)
cv2.waitKey()
cv2.destroyAllWindows()
img2와 img3은 밝기 값이 단 1 차이기 때문에 육안으로는 보기 힘들다. 하지만 아래와 같이 하게되면 흰색으로 나온다.
img3 = np.ones((240, 320, 3), dtype=np.uint8) *255 # 트루 컬러
영상 복사하기
# 영상 복사
img1 = cv2.imread('HappyFish.jpg')
img2 = img1
img3 = img1.copy()
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)
cv2.waitKey()
cv2.destroyAllWindows()
img2 = img1
img3 = img1.copy()
이제 여기서 요 두개의 차이점이 뭔지를 보자.
img1[:, :] = (0, 255, 255)
imshow 전 줄에 요 줄을 추가해주고 다시 실행해보면 아래처럼 된다.
im2 = img1은 참조와 같은 개념이고,
img1.copy()는 복사본을 아예 새롭게 생성하는 것이다.
그렇기 때문에 img1에서 어떤 처리를 하던 원본영상이 보이게 되는 것이다.
부분 영상 추출
# 부분 영상 추출
img1 = cv2.imread('HappyFish.jpg')
img2 = img1[40:120, 30:150] # numpy.ndarray의 슬라이싱
img3 = img1[40:120, 30:150].copy()
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)
cv2.waitKey()
cv2.destroyAllWindows()
'Dev(개발) > OpenCV(Python)' 카테고리의 다른 글
OpenCV-Python 입문(5) - 마스크 연산과 ROI (1) | 2021.02.02 |
---|---|
OpenCV Python 입문(4) - 영상의 속성과 픽셀 값 참조 (2) | 2021.01.28 |
OpenCV Python 입문(3) - 이미지 슬라이드쇼 만들기 (0) | 2021.01.27 |
OpenCV Python 입문(2) - Matplotlib 라이브러리 (1) | 2021.01.26 |
OpenCV Python 입문(1) - OpenCV 기본 함수 (3) | 2021.01.26 |
Comments