OpenCV 4 Code 12-3
OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 中
코드 12-3 외곽선 검출과 그리기
<전체코드>
void contours_basic() {
Mat src = imread("contours.bmp", IMREAD_GRAYSCALE);
if (src.empty()) {
cerr << "Image load failed!" << endl;
return;
}
vector<vector<Point>> contours;
findContours(src, contours, RETR_LIST, CHAIN_APPROX_NONE);
Mat dst;
cvtColor(src, dst, COLOR_GRAY2BGR);
for (int i = 0; i < contours.size(); i++) {
Scalar c(rand() & 255, rand() & 255, rand() & 255);
drawContours(dst, contours, i, c, 2);
}
imshow("src", src);
imshow("dst", dst);
waitKey();
destroyAllWindows();
}
01. 파일 불러오기
Mat src = imread("contours.bmp", IMREAD_GRAYSCALE); if (src.empty()) { cerr << "Image load failed!" << endl; return;
contours.bmp 파일을 그레이스케일 형식으로 불러와 src에 저장합니다. contours.bmp는 픽셀값이 0과 255로 구성된 이진 영상입니다.
02. 외곽선 검출
vector<vector<Point>> contours; findContours(src, contours, RETR_LIST, CHAIN_APPROX_NONE);
src 영상으로부터 모든 외곽선을 검출합니다. 외곽선의 계층 정보는 추출하지 않습니다.
하나의 영상에 여러 개의 객체가 존재할 수 있으므로 영상 하나에서 추출된 전체 객체의 외곽선 정보는 vector<vector<Point>>
타입으로 표현할 수 있습니다.
OpenCV에서 영상 내부 객체들의 외곽선을 검출하는 함수 이름은 findContours()입니다.
src 영상으로부터 모든 외곽선을 검출하고, 외각선의 계층 정보는 추출하지 않습니다.
03. GRAY to BGR
Mat dst; cvtColor(src, dst, COLOR_GRAY2BGR);
src 영상을 3채널 컬러 영상으로 변환하여 dst에 저장합니다.
03. 전체 외곽선 for 반목문 수행 및 외곽선 그리기
for (int i = 0; i < contours.size(); i++) { Scalar c(rand() & 255, rand() & 255, rand() & 255); drawContours(dst, contours, i, c, 2); }
전체 외곽선 개수만큼 for 반복문을 수행하고, contours에 저장된 각각의 외곽선을 임의의 색상으로 그립니다.
Author And Source
이 문제에 관하여(OpenCV 4 Code 12-3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@soo0928/OpenCV-4-Code-12-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)