1
我是OpenCV的新手。首先,將物體放置在白紙上,然後使用機器人相機拍攝照片。在下一步中,我試圖使用OpenCV提取放置在白紙上的對象(查找輪廓和繪製輪廓)。我想爲我的機器人項目使用這個對象。OpenCV繪製輪廓和作物
實施例圖像:
這是我嘗試的代碼:
int main(int argc, char* argv[]){
int largest_area=0;
int largest_contour_index=0;
Rect bounding_rect;
// read the file from console
Mat img0 = imread(argv[1], 1);
Mat img1;
cvtColor(img0, img1, CV_RGB2GRAY);
// Canny filter
Canny(img1, img1, 100, 200);
// find the contours
vector< vector<Point> > contours;
findContours(img1, contours, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
printf("%ld\n", contours.size());
for(size_t i = 0; i< contours.size(); i++) // iterate through each contour.
{
double area = contourArea(contours[i]); // Find the area of contour
if(area > largest_area)
{
largest_area = area;
largest_contour_index = i; //Store the index of largest contour
bounding_rect = boundingRect(contours[i]); // Find the bounding rectangle for biggest contour
}
}
cout << "contour " << contours.size() << endl;
cout << "largest contour " << largest_contour_index << endl;
Scalar color = Scalar(0,0,255);
drawContours(img0, contours, -1, color);
Mat roi = Mat(img0, bounding_rect);
// show the images
imshow("result", img0);
imshow("roi",roi);
imwrite("result.png",roi);
waitKey();
return 0;
}
這繪製輪廓用於在照片中的所有對象。但是,我怎樣才能在白皮書上提取對象?比如在這個形象:
我只想裁剪從圖像卡,但我不知道如何着手。誰能幫我嗎?
我已經編輯我的問題,並加入我的碼。我認爲,所以我試圖在我的問題中清楚。如果您有任何問題,您可以詢問我是否仍然不清楚。 –
感謝您糾正我的問題和我的英語@Alexey Kukanov –
任何人都可以幫我解決問題嗎?我無法繼續我的項目,因爲我陷入了這個階段。 –