책 :파이썬으로 만드는 opencv 프로젝트
슬라이싱
다음과 같은 경우에는 행렬안에 있는 원소를 슬라이싱 (?)해서 꺼내는 방식이다.
먼저a 를 출력하면 [0 1 2 3 4 5 6 7 8 9 ]
로 출력이된다.
a[2:5] 는[2 3 4 ]로 출력이되는데
원소와는 다르게 행렬은 첫번째를 0열 혹은 0행으로 계산해서 첫번째원소는 0열로 인식이 된다. 왜그런지 이유는 차차 알아보도록 하자.
따라서 결과는 이렇게 나온다..
두번째
b의 경우는 12개의 원소를 가진 행렬을 출력하는데 .reshape(3,4) 가 되어있으므로 3행 4열 로 출력한다.
결과값은
[ [ 0 1 2 3 ]
[ 4 5 6 7 ]
[ 8 9 10 11 ] ]
b[0:2,1:3] 은 0행부터 1행 까지와, 1열 부터 2열까지 를 출력하기때문에
[ [ 1 2 ]
[ 5 6 ] ]
이렇게 나온다.
나머지의 결과는 다음과 같이 나온다.
브로드캐스팅 연산중 슬라이싱에서 슬라이싱의 결과값이 원본에도 영향을 미친다는 사실이다.
다음과같이 bb는 b의 일부분을 추출한 것이다.
하지만 bb의 값을 수정하고 b를 다시출력해보면
다음과 같이 원본 b의 결과값이 바뀌는것을 볼 수 있다.
팬시 인덱싱
다음과 같은경우에는
결과가 이렇게 나오는데 두번째 줄에서 a [ [1,3] ] 부분이 이해가 안되었는데
누워있는 개발자에게 물어본결과 1번째 3번째 원소를 뽑아내는것이 아니라 1과3을 뽑아내는것이라고 한다.
True 와 False 는 행렬에서 True 위치에 있는 원소만 뽑아내는 것이다.
*알아봐야할것
다음과 같은 코드 에서
결과값은 이렇게 출력되는데
위에부터 순서대로
b를 그대로 출력
b에서 0행과 2행을 출력
b에서 0행부터 2행까지 슬라이싱해서 출력 (따라서 0행 1행 출력 )
하지만 마지막의 경우 내가 생각하기에는 b의 1행과 2행을 출력하고 2열과 3열을 출력하기 때문에
[ [ 2 3]
[ 10 11 ] ]
라고 생각했는데
0행 2열의 원소와 2행 3열의 원소를 뽑아내서 [2 11] 이나왔다.
알아보거나 외우자
병합과 분리
'공부 > open cv' 카테고리의 다른 글
2월 17일 opencv 공부 (0) | 2023.02.21 |
---|---|
2월16일 open cv 공부 (0) | 2023.02.17 |
2월 14일 발렌타인 데이 open cv 공부 (0) | 2023.02.15 |
2월7일 자 opencv 공부 (0) | 2023.02.14 |
2월 2일 자 opencv 공부 (0) | 2023.02.07 |