일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- #일상영어
- opencv SURF
- #영어
- #프로젝트
- python __init__
- tensorflow update
- python 알고리즘
- findContours
- object detection
- #1일1영어
- Convolution Neural Network
- #영어 명언
- #Android
- #실생활영어
- tokenizing
- keras
- c언어
- #실생활 영어
- TensorFlow
- #English
- convexhull
- 이미지 생성
- word embedding
- 딥러닝
- 영어명언
- #opencv
- text2img
- 영어
- python list
- 완전탐색
Archives
- Today
- Total
When will you grow up?
18.contour(윤곽,외곽선)찾기 findContours 본문
02. Study/Computer Vision(openframworks&opencv)
18.contour(윤곽,외곽선)찾기 findContours
미카이 2016. 11. 7. 22:51참고 : http://docs.opencv.org/
예제코드 : http://docs.opencv.org/3.1.0/df/d0d/tutorial_find_contours.html
opencv : findContours 함수
->영상(이미지) 내에서 외곽선을 추출하는 함수.
함수 원형입니다.
void cv::findContours | ( | InputOutputArray | image,//원본이미지 |
OutputArrayOfArrays | contours,//외곽선 벡터(배열) | ||
OutputArray | hierarchy, | ||
int | mode,//윤곽 검색 모드 설정 | ||
int | method,//윤곽 근사방법(cv::ContourApproximationModes)참조 | ||
Point | offset = Point() //맥락표현에서 오프셋 | ||
) |
외곽선 그리는 함수
cv::drawContours(result, contours,
-1, // 모든 외곽선 그리기
cv::Scalar(0), // 검게
2); // 두께를 2로
// 세 번째 파라미터가 음수라면 모든 외곽선이 그려짐
// 반면 그려져야 하는 외곽선의 첨자를 지정할 수 있음
//실행결과입니다
//전체적인 코드입니다
#include "ofApp.h" using namespace std; ofImage photo; Mat src; Mat src_gray; int thresh = 100; int max_thresh = 255; RNG rng(12345); /// Function header void thresh_callback(int, void*); void ofApp::setup() { photo.load("3211.bmp"); src = Mat(photo.getHeight(), photo.getWidth(), CV_8UC3, photo.getPixels().getData()); cvtColor(src, src_gray, CV_BGR2GRAY); blur(src_gray, src_gray, Size2i(3, 3)); char* source_window = "Source"; namedWindow(source_window, CV_WINDOW_AUTOSIZE); imshow(source_window, src); createTrackbar(" Canny thresh:", "Source", &thresh, max_thresh, thresh_callback); thresh_callback(0, 0); waitKey(0); } //-------------------------------------------------------------- void ofApp::update() { } //-------------------------------------------------------------- void ofApp::draw() { } void thresh_callback(int, void*) { Mat canny_output; vector> contours; vector hierarchy; /// Detect edges using canny Canny(src_gray, canny_output, thresh, thresh * 2, 3); /// Find contours findContours(canny_output, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE); /// Draw contours Mat drawing = Mat::zeros(canny_output.size(), CV_8UC3); for (int i = 0; i< contours.size(); i++) { Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)); drawContours(drawing, contours, i, color, 2, 8, hierarchy, 0, Point2i()); } /// Show in a window namedWindow("Contours", CV_WINDOW_AUTOSIZE); imshow("Contours", drawing); }
'02. Study > Computer Vision(openframworks&opencv)' 카테고리의 다른 글
19_1.Convex Hull (Graham's Scan 알고리즘 활용) (0) | 2016.11.08 |
---|---|
19.convexHull (0) | 2016.11.07 |
17.Gamma correction (감마 보정) (0) | 2016.10.30 |
16.Canny연산자로 영상 외곽선 검출 (0) | 2016.10.28 |
15.에지를 검출하는 Sobel필터 (0) | 2016.10.28 |
Comments