전체 글 68

[GoLang 시작하기 9] Go루틴

Go루틴 Go에서 "go" 키워드를 사용하여 함수를 호출하면, 런타임시 새로운 goroutine을 실행한다. 고루틴은 비동기적으로(asynchronously) 함수 루틴을 실행하여 여러 코드를 동시에(concurrently) 실행하는데 사용된다. 다음 그림은 main함수가 실행될 때 함수 1, 2, 3이 순차적으로 실행되는 것을 표현한 것이다. 함수 하나가 실행되는 데에 10초가 소요된다고 가정하면, 완료하는 데에는 30초가 필요할 것이다. 그런데 고루틴을 활용하여 이렇게 병렬적으로 처리할 수 있으면 함수는 10초밖에 소요되지 않는다. 다음 예제들을 살펴보자. #1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package main import ( "fmt"..

Golang 2020.04.09

[OpenCV] 동영상에서 특정 색을 다른 색으로 바꾸어 출력하기

배경인 초록색을 내가 원하는 색상으로 바꾸어 주는 작업을 할 것이다. 영화나 광고 촬영도 이런식으로 하지 않을까 생각된다. import cv2 as cv import numpy as np cap=cv.VideoCapture('./face.mp4') retval, frame=cap.read() frame=cv.resize(frame,None,fx=0.3,fy=0.3,interpolation=cv.INTER_AREA) while True: retval, frame=cap.read() if not retval: break frame=cv.resize(frame,None,fx=0.3,fy=0.3,interpolation=cv.INTER_AREA) #print(frame) # Load the aerial imag..

인공지능/OpenCV 2020.04.09

[OpenCV] Haar Cascade 사용하여 얼굴에 마스크 합성하기 (스*우)

개념 1. Haar Cascade Haar Feature Viola와 Jones가 제안한 개념으로 간단한 특징의 Boosted Cascade로 빠른 오브젝트 검출이 가능하다. 원리 1. Feature 선택: 중요한 Features 선택 2. Attention: 잠재적 영역에 집중한다. 3. 빠른 feature 평가를 위해 적분(Integral) 영상을 사용한다. 특정 Feature는 명암 차이가 있다는 이론을 바탕으로 한다. 이미지에서 영역과 영역의 밝기차를 이용하여 특징을 찾아낸다. 사람을 얼굴, 눈, 코, 입 등 특징적인 밝기 차가 있어서 이를 활용하는 것이다. OpenCV에서 ML로 훈련시킨 Feature에 따른 Harrdata를 xml 파일 형태로 제공한다. 즉, Haar Cascade는 머신러닝..

인공지능/OpenCV 2020.04.09

[OpenCV] 동영상에서 특정 색상의 물체를 찾기

import cv2 import numpy as np cap = cv2.VideoCapture('monkey.mp4') #비디오 객체 생성 retval, frame = cap.read() # 첫 프레임 읽어오기 frame=cv2.resize(frame,None,fx=0.2,fy=0.2,interpolation=cv2.INTER_AREA) #사이즈 조정 #bgr을 hsv로 변환 후 hsv를 쪼갬 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) h, s, v = cv2.split(hsv) #영역 선택 roi = cv2.selectROI('img',frame) roi_h = h[roi[1]:roi[1]+roi[3],roi[0]+roi[2]] #영상이 끝나거나 esc 키를 누를 ..

인공지능/OpenCV 2020.04.09

[OpenCV] 트랙바를 이용하여 이진화

import cv2 def onChange(pos): # 트랙바 핸들러 pos = cv2.getTrackbarPos('V','dst') cv2.namedWindow('dst') # 트랙바 생성 cv2.createTrackbar('V', 'dst', 0, 255, onChange) # 트랙바 위치 초기화 cv2.setTrackbarPos('V', 'dst', 100) while(1): img=cv2.imread('fruits.jpg') img=cv2.resize(img, (600,400)) pos = cv2.getTrackbarPos('V','dst') #영상을 읽어와서 hsv로 변환해준다. hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV) h,s,v=cv2.split(hsv) th,..

인공지능/OpenCV 2020.04.09

[GoLang 시작하기 8] map을 활용한 Dictionary

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 32 package main import ( "fmt" "github.com/gogo-yooyeon/project1/myDict" ) func main() { dictioinary := myDict.Dictionary{} baseword := "Hello :D" //딕셔너리에 단어 추가하기 dictioinary.Add("First", baseword) dictioinary.Add("Second", "Bye :(") //Second를 키로하는 단어 찾기 word, _ := dictioinary.Search("Second") fmt.Println(word) /..

Golang 2020.03.28

[GoLang 시작하기 7] Simple Bank - Method 연습

은행의 계좌 Account는 Owner(string)와 Balance(int) 속성을 가지고 있는 객체이다. 계좌에 Deposit(입금)하거나 Withdraw(출금)할 수 있다. 속성을 public으로 하여 바로 접근하면 외부에서 임의로 조정 가능하므로 Deposit, Withdraw과 같은 함수를 만들어 접근하도록 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 package main import ( "fmt" "projects_yooyeon/src/accounts" ) func main() { account := accounts.NewAccount("yooyeon") account.Deposit(100) fmt.Println(account...

Golang 2020.03.26

[GoLang 시작하기 6] Array, map, struct

Arrays and Slice 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 package main import ( "fmt" ) func main() { // 배열의 크기를 정해두는 경우 alpha := [5]string{"aaaa", "bbbb", "cccc"} //추가 alpha[3] = "dddd" fmt.Println(alpha) //배열의 크기를 정해두지 않는 경우 alpha2 := []string{"aaaa", "bbbb", "cccc"} //append 함수를 사용해서 추가 alpha2 = append(alpha2, "DDDD") fmt.Println(alpha2) } map 1 2 3 4 5 6 7 8 9 10 ..

Golang 2020.03.20

[Golang 시작하기 5] 포인터

포인터 C언어나 C++에 포인터가 있듯이 Go에서 포인터가 있다. 포인터는 대용량의 데이터를 다룰 때 유용하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 package main import ( "fmt" ) func main() { a := 20 b := a a = 10 fmt.Println("a 값: ", a, "a 주소: ", &a) fmt.Println("b 값: ", b, "b 주소: ", &b) } (결과) &(앰퍼샌드)를 변수 앞에 붙여주면 그 변수의 주소를 볼 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package main import ( "fmt" ) func main() { c := 20 d := &c fmt.Printl..

Golang 2020.03.20