qr코드 인식 : http://blog.daum.net/pg365/186


1. 그레이로 변경

        image = cv2.imread("sample.jpg", cv2.IMREAD_COLOR)

        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)


        hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

2. 이미지 저장

cv2.imwrite('image.jpg', image)

3. 블랙 화이트 분리

ret,thresh1 = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)


4. 화이트 색상 HSV 값

http://stackoverflow.com/questions/22588146/tracking-white-color-using-python-opencv


sensitivity = 15
lower_white = np.array([0,0,255-sensitivity])
upper_white = np.array([255,sensitivity,255])

5. 색상 반전

imagem = cv2.bitwise_not(imagem)


6. 카메라 해상도 변경

cap = cv2.VideoCapture(0)

cap.set(3, 1280.)
cap.set(4, 720.)


7. 외곽선 추출

python

http://www.pyimagesearch.com/2014/04/21/building-pokedex-python-finding-game-boy-screen-step-4-6/


        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

        gray = cv2.bilateralFilter(gray, 11, 17, 17)

        edged = cv2.Canny(gray, 30, 200)


        cnts = cv2.findContours(edged.copy(), cv2.RETR_TREE,

                cv2.CHAIN_APPROX_SIMPLE)[-2]


cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:10]

            

            screenCnt = None


            


            

            print 'start'

            for cnt in cnts:

                epsilon = 0.1 * cv2.arcLength(cnt, True)

                polygon = cv2.approxPolyDP(cnt, epsilon, True)


                if len(polygon) == 4:

                #if True:

                    screenCnt = polygon

                    #cv2.drawContours(temp, [screenCnt], -1, (0, 255, 0), 3)

                    cv2.drawContours(image, [screenCnt], -1, (0, 255, 0), 3)

                    #cv2.imshow("Screen", temp)

                    print 'find!!'

                    break

            print 'end' 

c

===========아래===========

http://hongkwan.blogspot.kr/2013/01/opencv-7-4-example.html

cv::findContours(image, 
contours, // 외곽선 벡터 
CV_RETR_EXTERNAL, // 외부 외곽선 검색
CV_CHAIN_APPROX_NONE); // 각 외곽선의 모든 화소 탐색
// 지정된 플래그 - 첫 번째는 외부 외곽선이 필요함을 나타내며 객체의 구멍을 무시
// 두 번째 플래그는 외곽선의 형태를 지정 - 현재 옵션으로 벡터는 외곽선 내의 모든 화소 목록
// CV_CHAIN_APPROX_SIMPLE 플래그로 하면 마지막 점이 수평 또는 수직, 대각선 외곽선에 포함됨
// 다른 플래그는 간결한 표현을 얻기 위해 외곽선의 정교하게 연결된 근사치를 제공

// 이전 영상으로 9개 외곽선을 contours.size()로 얻음
// drawContours() 함수는 영상 내의 각 외곽선을 그릴 수 있는 함수
// 하얀 영상 내 검은 외곽선 그리기
cv::Mat result(image.size(), CV_8U, cv::Scalar(255));
cv::drawContours(result, contours,
-1, // 모든 외곽선 그리기
cv::Scalar(0), // 검게
2); // 두께를 2로
// 세 번째 파라미터가 음수라면 모든 외곽선이 그려짐
// 반면 그려져야 하는 외곽선의 첨자를 지정할 수 있음

8. 


'영상처리 > OpenCV' 카테고리의 다른 글

OpenCV - Diffence Image 영상차  (0) 2017.01.04
Posted by 공놀이나하여보세
,

Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
Trace/breakpoint trap (core dumped)

위와 같은 에러가날 때가 있다.


이때는 아래처럼 코드에 한줄을 추가해주면 된다.

import matplotlib 

matplotlib.use('Agg')


출처 : https://github.com/yosinski/deep-visualization-toolbox/issues/10

Posted by 공놀이나하여보세
,

http://blog.naver.com/samsjang/220498694383

Posted by 공놀이나하여보세
,

http://www.robindavid.fr/opencv-tutorial/chapter10-movement-detection-with-background.html


http://stackoverflow.com/questions/14508190/new-to-python-opencv-motion-tracking-using-webcam-thresholding-dilate


http://blog.naver.com/PostView.nhn?blogId=pinkjea95&logNo=220772239173&redirect=Dlog&widgetTypeCall=true


http://www.pyimagesearch.com/2016/04/11/finding-extreme-points-in-contours-with-opencv/

'영상처리 > OpenCV' 카테고리의 다른 글

마커 인식  (0) 2017.02.03
Posted by 공놀이나하여보세
,

1. Open CV setup

http://www.pyimagesearch.com/2015/10/26/how-to-install-opencv-3-on-raspbian-jessie/


2. camera recognization

볼트레킹

http://www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv/

http://blog.naver.com/PostView.nhn?blogId=chandong83&logNo=220826500738&redirect=Dlog&widgetTypeCall=true


얼굴인식

http://blog.naver.com/PostView.nhn?blogId=chandong83&logNo=220829044388&categoryNo=29&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView


3. 아두이노와 시리얼 통신

http://hinco.tistory.com/4

* etc

http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_rpi&wr_id=2


http://webnautes.tistory.com/916

Posted by 공놀이나하여보세
,

짐벌 개발 사이트

Embedded 2016. 9. 8. 13:39

http://www.basecamelectronics.com 

http://www.basecamelectronics.com/store/

https://forum.basecamelectronics.com/index.php?p=%2Fsearch&Search=beholder


http://netmedia.or.kr/xe/nm32b

http://cafe.naver.com/netmedia



http://www.teamrebeldesign.com/

http://www.ucam.co.kr/

http://www.auhobby.com/index.php/handheldgimbal/trd-handheld-ds1.html


후타바 s bus 조종기



Posted by 공놀이나하여보세
,
nano ~/.bashrc


http://www.akeric.com/blog/?p=1976


Posted by 공놀이나하여보세
,

raspi-config에서 cui 부팅이 되도록 수정한다.


http://wooguy-linux.blogspot.kr/2014/08/blog-post_11.html


OS 환경설정 변경
환경 설정 파일인 '/etc/rc.local' 파일을 수정하여 자동으로 실행되도록 한다.











Posted by 공놀이나하여보세
,

간단하게 물체인식을 진행할 일이 있어서 Google Vision API를 사용해보게 되었다

이미 잘 해두신 분이 있어서 그걸 따라해본 것을 정리해보고자 한다


일단 google vision api 를 사용할 수 있도록 계정에서 활성화 시켜야한다.

https://cloud.google.com/vision/docs/quickstart#make_a_request_to_the_cloud_vision_api_service


안드로이드용 앱이 있어서 실행해 보았다.

아래 주소에서 샘플 소스를 받으면 된다.

https://github.com/GoogleCloudPlatform/cloud-vision/blob/master/android/README.md



그대로 컴파일해서 실행하니 아래와 같이 결과가 잘 나왔다

파이썬 용도 있는데 라즈베리파이에 카메라를 연결하고 라즈베리파이에서 실행해 보았다.


http://bbangpan.tistory.com/76
face.py는 사람 얼굴을 업로드하면 어떤 표정인지 알려준다

label.py는 물체 사진을 업로드하면 어떤 물체인지 알려준다


기본적인 건 잘 되는 것을 확인할 수 있으나 좀 더 세밀한 분석을 위해 

앞으로 API를 분석해보고자 한다.

Posted by 공놀이나하여보세
,

아직 어려움 ㅋㅋㅋ


선형 회귀


종속변수Y와설명변수집합X1, X2, ..., Xp사이의관계를선형으로가정하고이를가장잘설명할수있는회귀계수(regression coefficients)를추정


데이터 탐색 목적 뿐만 아니라 예측을 위해서도 사용됨


전진 선택법

- 많은 것에서 줄여감

후진 소거법

- 적은 것에서 추가해감

단계적 선택법

- 변수의 개수를 줄였다 늘렸다 하면서 최적의 개수를 선택한다.

중복된 변수 제거가 중요하다.


최소 자승법을 이용해서 coefficient 찾는 법

데이터 전처리 - 문자로 된 것을 숫자로 변경해서 처리함

p-value : ??


성능 평가 방법 

데이터를 받으면 70%는 training data로 사용하고 

30%는 validation data로 사용함


R실습

full_model <- lm(Price ~ ., data = trn_data)

Price ~ : Price가 타겟변수이고 나머지는 설명변수로 한다.
# Split the data into the training/validation sets
trn_idx <- sample(1:nCar, round(0.7*nCar))
trn_data <- mlr_data[trn_idx,]
val_data <- mlr_data[-trn_idx,]

sample : random 하는 함수


선형 회귀 기본 함수를 사용할 수 있다.

lm 이용


# 검증 데이터에 대한 각 변수선택 결과의 예측 정확도 비교

full_haty <- predict(full_model, newdata = val_data)




Posted by 공놀이나하여보세
,