본문 바로가기

전체 글

(118)
이미지 비트연산을 활용한 이미지 합성 import cv2 as cv import numpy as np logo = cv.imread("opencv.png", cv.IMREAD_COLOR) background = cv.imread("1.jpg", cv.IMREAD_COLOR) logo_gray = cv.cvtColor(logo, cv.COLOR_BGR2GRAY) ret, logo_mask = cv.threshold(logo_gray, 240, 255, cv.THRESH_BINARY) logo_mask_inv = cv.bitwise_not(logo_mask) # 넣고 싶은 위치에 합성할 이미지의 크기만큼 배경 이미지를 잘라냄 height, width = logo_gray.shape[:2] background_cut = background[0:h..
물체 감싸기 1. 일단 각 4자리 꼭지점의 좌표를 알아야된다. - 나는 그냥 그림판으로 좌표 잡음 각 꼭지점 좌표가 왼쪽 위부터 시계 방향으로 [60, 84] [289, 79] [293, 439] [61, 441] 2. 일단 변환할 이미지 사이즈를 정한 후 초기화 3. 이제 좌표들을 원하는 위치에 대응시켜 줌 1 2 3 4 순으로 - 나는 카드를 똑바로 세우기 위해서 아래와 같이 기존 오른쪽 위 좌표를 1번에 대응시키게 초기화 했음 4. 변환 후 출력
그리기에 관한 것!!!! ※ numpy 배열 만들기 img = np.zeros((512, 512, 3), np.uint8) : 512,512 는 크기고, 3 은 그레이스케일을 색 스케일로 변경시켜주는 거임 1. 너비, 높이, 채널 수 가져오기 2. 선 긋기 cv.line(img, (시작 좌표 ), (끝 좌표), (색상 ), 굵기 ) 3. 사각형 그리기 cv.rectangle(img, (시작 좌표 ), (끝 좌표), (색상 ), 굵기 ) 4. 원 그리기 cv.circle(img, (중앙 좌표), (반지름),(색상), 굵기) -> 모두 공통적으로 굵기 -1 이면 내부 채우기 5. 타원 그리기 cv.ellipse(img, (중앙 좌표), (x축 반지름, y축 반지름), (기울임 정도), 0, 360) 6. 텍스트 쓰기 cv.putTe..
그래픽 인터페이스 (GUI) 1. 트랙바 : Canny 함수를 써보자 -> Canny 함수는 에지 검출 함수임, threshold 두개를 입력으로 받는다. : 트랙바의 수치를 가져와서 사용하고 싶으면 getTrackbarPos를 사용하면 된다. cv.namedWindow("test") cv.createTrackbar('low threshold', 'test', 0, 1000, on_trackbar) cv.createTrackbar('high threshold', 'test', 0, 1000, on_trackbar) # 초기 값 cv.setTrackbarPos('low threshold', 'test', 50) cv.setTrackbarPos('high threshold', 'test', 150) cv.imshow("aaa", img..
넘파이 참고 출처) https://laboputer.github.io/machine-learning/2020/04/25/numpy-quickstart/ 1. 넘파이 에서는 모든 배열의 값이 기본적으로 같은 값이여야 한다. 2. 기본 속성 값들 ex) 1) ndarray.shape : 배열의 각 축(axis)의 크기 -> 순서대로 행 열 출력 (3,5) 2) ndarray.mdim : 축의 개수 -> 출력은 2(2차원이므로) 2) ndarray.dtype : 요소의 타입, 여기서는 uint8 3) ndarray.size() : 요소의 갯수 3. 선언 1) 기본 a = np.array( [1,2,3] ) b= np.array( [1,2,3] , [4,5,6] ) 2) 함수 사용 -> shape 에는 행 열 순으로 ..
Mat 객체 활용 1. 기본 순서 1) 이미지를 imread로 가져온다 2) 이미지 관련 처리 3) imshow 사용해서 윈도우 띄움 4) cv2.waitKey(0) 안하면 바로꺼져버리므로 처리 -> 이거는 특별히 뭘 한다기 보다 입력을 기다리고 있는 상태를 표현한거임 2. 중요한점 - 이미지 선을 그리는거와 같은 작업을 하게 된다면, 서로 영향을 줌, 동기화 됨 - 그러나 OpenCV 함수를 적용하면, 다른 넘파이 배열에 영향을 주지 못한다!! - 딱 함수 적용한 파일의 넘파이 배열만 바뀜 왜? 리턴되는 객체가 입력 객체와 다르기 때문 ※ is 와 ==의 차이점 is: 객체를 비교 == : 값을 비교 3. 이미지 복사 : 파이썬에서는 이미지를 저장하기 위해 넘파이 배열을 사용하기 때문에 copy()를 사용한다. : 즉 ..
파이썬 기초 문법 -2 빠르게 빠르게 ㄱㄱ 참고 1. 줄바꾸기 할때 \ 쓰면 됨 참고 2. print 끝에 end =" " 출력 끝나도 줄바꿈 안함 1. 함수 선언 def 이름(인자,인자, ~~ ): 내용~~~ return 반환 값 2. 함수가 반환값이 두개일수도 있음!! : struct로 안뽑아도 됨 미쳤다 def math(a, b): c = a+b d = a*b return c, d add, multi = math(3, 4) print(add, multi) 3. 가변 인자 포인터 처럼 생긴거 써서 뒤에는 갯수 원하는 대로 받기 가능 4. 함수 안에서 전역변수 쓸려면 앞에 global 붙이셈 5. 출력 end =" ~~" : 줄 바꿈 대신 이거 출력 se- =" " : 쉼표 ljust(숫자) : 왼쪽 밀착인데, 숫자만큼의 공..
파이썬 기초 문법 파이썬 안하려고 억지부리다가 OpenCV에서 쓸만한 예제들은 다 파이썬으로 되어 있길래 파이썬 기본 문법만 빠르게 땔란다. 1. ! 대신 not 사용가능 print(not True) -> False print(not (5>3) -> False print("나는 %d살입니다." %20) 여러개면 print(" %d,, %d ", %( ---, ----)) %d : 정수 %s : string %c : char - format print("나는 { } ".format(~~~) ) print("나는 {1} ㅎㅎㅎ {0}".format(3, 4)) -> 중괄호 안에는 format의 순서,format 안에는 변수도 물론 가능 f 붙이는게 개꿀이다 줄바꿈 : \n 커서 바꿈 : \r 쓰다가 덮어씀 백스페이스 : \b..