#include #include #include #include #include #include #include #include #include #include #include #include #include struct thread_data{ int fd; char ip[20]; }; void *ThreadMain(void *argument); // get sockaddr, IPv4 or IPv6: void *get_in_addr(struct sockaddr *sa) { if (sa->sa_family == AF_INET) { return &(((struct sockaddr_in*)sa)->sin_addr); } return &(((struct sockaddr_in6*)sa)->sin6_addr); }..
윈도우(일정 범위)를 모든 방향으로 이동시키며 픽셀의 강도 변화를 측정함으로써 윈도우 내의 특징을 발견할 수 있다. 평평한 영역에서는 모든 방향으로 픽셀 강도 변화가 없다.에지에서는 에지의 방향따라 픽셀 강도 변화가 없고 에지와 수직방향으로 픽셀 강도 변화가 있다.코너에서는 모든 방향에 대해 강한 픽셀 강도 변화가 존재한다. 윈도우내의 좌표(x,y)에 있는 픽셀 강도와 (u,v)만큼 윈도우를 시프트 시켰을때 픽셀 강도의 변화량은 다음 식으로 측정한다. Window function은 직사각형 윈도우이거나 가우시안 윈도우를 사용하며 윈도우 아래의 픽셀들에 가중치를 주는 용도로 사용되어 진다. 평평한 영역에서는 강도 변화가 거의 없기 때문에 위 식은 0에 가까울 것이다.특징을 추출할 수 있는 것들이 많은 영역..
버튼을 누르는 순간 폴링 에지 인터럽트가 발생하여 callback함수가 실행됩니다. import RPi.GPIO as GPIO def callback(channel): print "falling edge detected from pin %d"%channel GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_UP ) GPIO.add_event_detect( 11, GPIO.FALLING, callback=callback, bouncetime=300) while True: pass
LED의 밝기가 점점 밝아지다가 다시 점점 어두워지는 것을 세번 반복하는 예제입니다. #-*- coding: utf-8 -*- import RPi.GPIO as GPIO import time GPIO.setmode( GPIO.BOARD ) #12번핀은 출력모드로 설정 GPIO.setup(12, GPIO.OUT) pwm = GPIO.PWM(12,50) #50hz pwm.start(0) for i in range(0,3): for dc in range(0,101,5): pwm.ChangeDutyCycle(dc) time.sleep(0.1) for dc in range(100,-1,-5): pwm.ChangeDutyCycle(dc) time.sleep(0.1) pwm.stop() GPIO.cleanup()
LED는 12번핀에 연결하고 버튼은 11번핀에 연결한 상태입니다. 이제 버튼을 누를 때마다 LED가 켜지도록 만들 것입니다. #-*- coding: utf-8 -*- import RPi.GPIO as GPIO import time GPIO.setmode( GPIO.BOARD ) #12번핀은 출력모드로 설정 GPIO.setup(12, GPIO.OUT) #11번핀은 입력모드로 설정 GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_UP) while True: input_state = GPIO.input(11) if input_state == False: GPIO.output(12, GPIO.HIGH) else: GPIO.output(12, GPIO.LOW) time.sleep..
버튼의 한쪽은 그라운드인 14번핀에 연결하고 다른 한쪽은 11번핀에 연결합니다. 버튼을 누르게 되면 화면에 'Button pressed'라고 출력됩니다. #-*- coding: utf-8 -*- import RPi.GPIO as GPIO import time GPIO.setmode( GPIO.BOARD ) GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_UP) while True: input_state = GPIO.input(11) if input_state == False: print( 'Button pressed' ) time.sleep(0.5)
6번 핀에 LED 음극을 연결하고 12번 핀에 LED의 양극을 연결합니다. LED가 3번 반복해서 깜박이도록한 예제입니다. #-*- coding: utf-8 -*- import RPi.GPIO as GPIO import time #라즈베리파이 보드핀 넘버를 사용 GPIO.setmode( GPIO.BOARD ) #12번 핀을 출력모드로 설정한다. GPIO.setup( 12, GPIO.OUT ) for i in range (0,3): GPIO.output( 12, GPIO.HIGH ) time.sleep(1) GPIO.output( 12, GPIO.LOW ) time.sleep(1) GPIO.cleanup()
서보모터를 아래처럼 직접 아두이노에 연결을 해주었습니다. 시리얼 모니터를 열고 -180에서 180 사이의 숫자를 입력하면 서모 모터가 해당 방향으로 이동하게 됩니다. #include Servo myservo; int servo_position = 0; void setup() { Serial.begin(9600); myservo.attach(9); //디지털9번핀에 서보모터를 연결 } String readSerial() { String str = ""; char ch; while( Serial.available() > 0 ) { ch = Serial.read(); str.concat(ch); delay(10); } return str; } void loop() { String str = readSerial..
T-shirt size problem 아래는 옷을 생산할 때 , 참고하기 위해 만든 사람들의 키와 몸무게에 대한 데이터를 도식화한 그림이다. 회사 입장에서는 모든 사이즈를 만들 수 없기 때문에 아래 그림처럼 사람들의 신체사이즈를 그룹화하여 3개 혹은 5개의 그룹으로 만들어서 제품을 생산하게 된다. 이때 사용할 수 있는 것이 K-Means Clustering이다. How does it work ?이 알고리즘은 반복적인 처리(iterative process) 알고리즘이다. 단계별로 두 개의 데이터 그룹으로 그룹화 해보도록 하자. 1단계 : 알고리즘은 임의로 두 개의 중심점(centroid)인 C1과 C2를 선택한다. C1, C2 ( 중심 점으로 두 개의 데이터를 선택하기도 한다. ) 2단계 : 두 개의 중심..
https://trac.ffmpeg.org/wiki/Scaling%20(resizing)%20with%20ffmpeg ffmpeg -i input.avi -vf scale=320:240 output.avi