#include <iostream>
// cv support
#include <opencv2\core\core.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;
int _threshold = 180;
int main(int argc, char** argv){
cv::Mat isrc = cv::imread("object.png");
cv::Mat igray;
cv::Mat ithreshold;
cv::Mat icontour;
cv::cvtColor(isrc, igray, CV_BGR2GRAY);
cv::threshold(igray, ithreshold, _threshold, 255, cv::THRESH_BINARY_INV);
// segment by contour
std::vector<std::vector<cv::Point>> contours;
cv::findContours(ithreshold, contours, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0,0));
// check, have a segment ?
if(contours.size()){
for(int i=0;i<(int)contours.size();i++){
for(int j=0;j<(int)contours[i].size();j++){
cv::circle(isrc, contours[i][j], 5, Scalar(0,0,255));
}
}
}
cv::imshow("source" , isrc);
cv::imshow("gray", igray);
cv::imshow("threshold", ithreshold);
cv::waitKey(0);
return 0;
}
这段代码的结果在图片中。我必须分割圆和五边形。并用矩形裁剪它。 我有 2 个问题 1)如何找到最大轮廓?2)如何使用此代码的最大轮廓图像中的黑色矩形进行裁剪?
最好的感谢主席