처음으로는 영상을 지정한 크기로 새로 생성할 수 있는데
numpy.emtpy zeros ones full 함수등이 있다.
위 함수들의 인자에는 shape가 있는데 이는 이 전 시간에 배운 shape를 넣어주면된다.GrayScale 은 width , height Color 는 width, height, 3 (채널값) 의 값을 넣어주면 된다.
그리고 dtype이라는 인자가 뒤에 나오게 되는데 기본 Default값이 float으로 지정되어있기때문에 영상으로 사용하기 위해서는 uint8값으로 꼭 지정해주어야 한다.
empty 함수는 배열( 새로운 영상)을 만들고 픽셀값은 임의의 값으로 배정이된다.그래서 zeros라는 모든 픽셀값을 0으로 바꿔주는 또는 ones 라는 모든 픽셀값을 1로 바꿔주는 함수를 사용하여 기본 셋팅을 해줄수도 있고
full이라는 함수로 내가 원하는 픽셀값으로 영상을 생성해줄수도 있다.
위 코드로 작성된 결과 영상이다.
img1 은 위에서 설명한대로 픽셀에 임의의 값이 들어가기 때문에 불완전한 영상으로 생성된걸 볼 수 있다.
따라서 empty 함수 사용 이후에는 꼭 임의의값으로 초기화해주는 작업이 필요해 보인다.
또한 컬러영상 버퍼를 생성한 뒤에는 full 함수로 다른컬러로 픽셀을 채울 수 있다.예를들면 노란색으로 해당 영상의 픽셀들을 채우고 싶다면img4 = np.full((480,6840,3) , (0,255,255), dtype=np.uint8) 이라는 함수를 사용하게 되면img4의 모든 픽셀에 (0,255,255)라는 값을 채워줄 수 있다.
그리고 영상의 생성 , 복사 , 부분 영상 추출에 대해도 알아보았다.
영상을 복사하기위해서 많은 기능들이 존재하는데아주 간단하게 사용할 수 있는 방법 ( 함수 ) 들이 존재한다.
위와같이 이미지의 1을 이미지 2와 3에 카피하였는데두 카피방식의 차이점이 무엇인가하면
위함수같이 카피 이후에 이미지1에 노락색으로 색칠을 해버리면이미지 2도 같이 노란색으로 색칠되어있는 반면이미지 3은 이미지1의 원본영상을 갖고있다.
이는 즉슨, 이미지1과 이미지2는 영상을 공유, 참조한다고 볼 수 있다.
하지만 이미지3은 메모리를 새로 할당하여 이미지1의 데이터들을 새로 복사한다고 볼 수 있다.
이렇게 같은 기능인데도 전혀 다르게 사용될 수 있다는 걸 알수있고어떻게보면
실수로 같은 기능인줄 알고 사용했을때에도 다른 결과값을 도출해내는
실수를 할 수 있을법한 경우도많이 나올 수있을것이라는 것도 알수있다....
부분 영상을 추출할때는
인덱싱 or 슬라이싱 방법을 사용하여 추출 할 수 있다.
img2 - img1[40:120, 30:150] 이라고 되어있다면
40번째 행부터 120번째 행까지
30번째 열부터 150번째 행까지
부분적으로 영상을 추출할 수 있다.
그렇다면 여기서 궁금한점은 이미지2와 이미지1이 공유를 하고있다면이미지 2에서도 영상을 변환시키면 이미지1에도 영향을 받는지이다.
소스코드에서 테스트를 해보면
이미지2의 모든 픽셀들을 가득 채웠을때 이미지1에도 영향을 미치는 걸 볼 수있다.따라서 이미지1,2는 모든 픽셀들을 지속적으로 공유하고 있다는 것을 알 수 있다.
*참고
인덱싱 - 문자열이나 리스트에 번호를 부여하는것
( 양수인덱스는 0번부터 , 음수 인덱스는 -1부터 역순으로 부여된다 )
슬라이싱 - [시작번호:끝번호]를 사용하여 원하는 문자열을 뽑아내는것
따라서 인덱싱된 번호를 사용하여 슬라이싱하면 내가 원하는 값들을 추출해낼 수 있다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] OpenCV-Python 기초 사용법 _ OpenCV 그리기 함수 (0) | 2022.04.28 |
---|---|
[Open CV] OpenCV-Python 기초 사용법 _ 마스크 연산과 ROI (0) | 2022.04.27 |
[Open CV] OpenCV-Python 기초 사용법 _ 영상의 속성과 픽셀 값 참조 (0) | 2022.04.25 |
[Open CV] OpenCV-Python 시작하기 _ 실전코딩 ( 이미지 슬라이드쇼 ) (0) | 2022.04.24 |
[Open CV] OpenCV-Python 시작하기 _ Matplotlib 사용하여 영상 출력하기 (0) | 2022.04.23 |