이미지에서 윤곽선을 그려 가고 있습니다. 내 웹캠에서 윤곽을 추출하는 프레임이 있습니다. 그런 다음 영역별로 필터를 적용하고 drawContours()를 호출하여 표시합니다. 문제는 필자가 필터링 된 윤곽선을 그릴 때입니다. 원본을 그리면 모든 것이 정상적으로 작동합니다. 다음 코드는 :OpenCV : 어설 션이 drawContours()와 함께 실패했습니다.
size_t contours_size=contours.size();
bool contour_is_valid[contours_size];
size_t filtered_contours=0;
size_t copied_contours=0;
size_t i;
double area;
for(i=0;i<contours_size;i++){
area=contourArea(contours.at(i),false);
if(area>minArea && area<maxArea){
contour_is_valid[i]=true;
filtered_contours++;
}
else{
contour_is_valid[i]=false;
}
}
area_filtered_contours.resize(filtered_contours);
for(i=0;i<contours_size;i++){
if(contour_is_valid[i]==true){
area_filtered_contours.at(copied_contours).resize(contours.at(i).size());
copy(contours.at(i).begin(),contours.at(i).end(),back_inserter(area_filtered_contours.at(copied_contours)));
copied_contours++;
}
}
윤곽 findContours() 및 이와의 출력, area_filtered_contours 동등한 벡터로서의 벡터 < < 포인트 ""데이터. 내가 뭘 하려는지는 지역 감각으로 유용한 윤곽선을 가진 것과 같은 다른 구조를 생성하는 것입니다. 그런 다음
drawContours(cnt_img2,contours,_levels <= 0 ? 3 : -1, 255,1,8,hierarchy, std::abs(_levels));
잘 작동하지만
drawContours(cnt_img2,area_filtered_contours,_levels <= 0 ? 3 : -1, 255,1,8,hierarchy, std::abs(_levels));
나에게 주장의 오류를 제공합니다. 무엇이 문제 일 수 있습니까? 사전에
감사합니다,
페데리코
는 어쩌면이 같은 오류가이 선 발생, 도움이 될 것입니다 '벡터 <벡터> 테스트; \t \t test.resize (1); \t \t test.at (0) .resize (1); \t drawContours (cnt_img2, test, _levels <= 0? 3 : -1, 255,1,8, hierarchy, std :: abs (_levels)); ' –
gedefet
어설 션 오류를 제공 해주실 수 있습니까? –
@ ØysteinW. OpenCV 오류 : drawContours에서 어설 션이 실패했습니다 (hierarchy.total() == ncontours && hierarchy.type() == CV_32SC4). /tmp/buildd/opencv-2.3.1/modules/imgproc/src/contours.cpp 파일 , 1604 'cv :: Exception'인스턴스를 던진 후 호출 됨 terminate : what() : /tmp/buildd/opencv-2.3.1/modules/imgproc/src/contours.cpp:1604 : 오류 : (-215)) hierarchy.total() == ncontours && hierarchy.type() == 함수 drawContours의 CV_32SC4 – gedefet