Tôi đang cố gắng tách các đường viền của hình ảnh (để tìm các vùng đồng nhất) vì vậy tôi đã áp dụng cvCanny và sau đó cvFindContours, sau đó tôi sử dụng mã sau để vẽ 1 đường bao mỗi lần tôi nhấn một phím:Làm thế nào để có được đường nét riêng biệt (và điền chúng) trong OpenCV?
for(; contours2 != 0; contours2 = contours2->h_next){
cvSet(img6, cvScalar(0,0,0));
CvScalar color = CV_RGB(rand()&255, rand()&255, rand()&255);
cvDrawContours(img6, contours2, color, cvScalarAll(255), 100);
//cvFillConvexPoly(img6,(CvPoint *)contours2,sizeof (contours2),color);
area=cvContourArea(contours2);
cvShowImage("3",img6);
printf(" %d", area);
cvWaitKey();
}
Nhưng trong lần lặp đầu tiên nó vẽ TẤT CẢ các đường bao, trong giây nó vẽ TẤT CẢ nhưng một, thứ ba rút ra tất cả trừ hai, v.v.
Và nếu tôi sử dụng chức năng cvFillConvexPoly nó lấp đầy hầu hết các màn hình (mặc dù như tôi đã viết này, tôi nhận ra một đa giác lồi sẽ không làm việc cho tôi, tôi cần phải điền chỉ là insideof đường viền)
Vì vậy, , làm cách nào tôi có thể lấy 1 đường viền trên mỗi lần lặp của, thay vì tất cả các đường bao còn lại?
Cảm ơn.
Cảm ơn rất nhiều, có nghĩa là, tôi đã không nhận thấy thông số đó. Bây giờ tôi chỉ cần điền vào chúng, có chức năng nào không? Nếu không, làm thế nào tôi có thể đi về nó? có thể lưu vực sẽ làm việc cho những người đóng cửa, nhưng đôi khi cũng có những đường nét mở. –
Sử dụng giá trị âm cho tham số độ dày. Nếu điều đó không hiệu quả với bạn, có thể một trong số đó sẽ giúp: http://stackoverflow.com/questions/12929197/opencv-closing-a-shape-and-filling-it, http://stackoverflow.com/ Câu hỏi/1716274/fill-the-holes-in-opencv – maditya
Cảm ơn một lần nữa, Sử dụng một độ dày tiêu cực làm các trick hoàn hảo. –