boundingRect metodu
Şöyle yaparız.
Şöyle yaparız.
İmzası şöyle
Şöyle yaparız.
Şöyle yaparız
Java'da şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
vector<vector<Point>> contours; // Vector for storing contour
vector<Vec4i> hierarchy;
findContours(img, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
for (int i = 0; i < contours.size(); i++) // iterate through each contour.
{
Rect bounding_rect;
bounding_rect = boundingRect(contours[i]); //bounding rectangle for contour
}
Şöyle yaparız.for (unsigned int i = 0; i < contours.size(); i++)
{
std::cout << " Area: " << contourArea(contours[i]) << std::endl;
}
Şöyle yaparız.vector<vector<Point>> contours; // Vector for storing contour
vector<Vec4i> hierarchy;
findContours(img, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
for (int i = 0; i < contours.size(); i++) // iterate through each contour.
{
double a = contourArea(contours[i], false); //area of contour
}
drawCountours metodu
Açıklaması şöyle.
Yeşil renkte ve 2 kalınlığında ilk contour'u çizmek için şöyle yaparız.
Şöyle yaparız.
drawContours function needs a vector of vector of cv::PointÖrnek
Yeşil renkte ve 2 kalınlığında ilk contour'u çizmek için şöyle yaparız.
std::vector<std::vector<cv::Point>> boxContours;
...
// there is only 1 contour inside, so always draw the 0-index contour!
cv::drawContours(image, boxContours, 0, cvScalar(0, 255, 0), 2);
ÖrnekŞöyle yaparız.
drawContours(frame, contours, largest_contour_area_index, (0, 255, 0), 3);
findCountours metodu - input + output + mode + method
Şu satırı dahil ederiz.
mode - CV_RETR_EXTERNAL
CV_RETR_EXTERNAL sadece en dıştaki çizgileri bulur. Geometrik bir şeklin örneğin karenin içinde metin düşünelim. Bu seçenek ile sadece en dıştaki çizgiyi buluruz . Böylece ilgilenmedigimiz çizgiler karşımıza çıkmaz.
mode - CVRETR_LIST
Örnek ver
mode - CVRETR_TREE
CVRETR_TREE iç içe çizgileri ağaç şeklinde verir. Böylece bir çizginin içindeki nesneleri dolaşabiliriz
Method
method olarak CV_CHAIN_APPROX_NONE,CHAIN_APPROX_SIMPLE verilebilir.
Şöyle yaparız.
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
mode olarak CV_RETR_EXTERNAL,CV_RETR_LIST, CVRETR_TREE verilebilir.mode - CV_RETR_EXTERNAL
CV_RETR_EXTERNAL sadece en dıştaki çizgileri bulur. Geometrik bir şeklin örneğin karenin içinde metin düşünelim. Bu seçenek ile sadece en dıştaki çizgiyi buluruz . Böylece ilgilenmedigimiz çizgiler karşımıza çıkmaz.
mode - CVRETR_LIST
Örnek ver
mode - CVRETR_TREE
CVRETR_TREE iç içe çizgileri ağaç şeklinde verir. Böylece bir çizginin içindeki nesneleri dolaşabiliriz
Method
method olarak CV_CHAIN_APPROX_NONE,CHAIN_APPROX_SIMPLE verilebilir.
Şöyle yaparız.
Mat input = ...;
bool externalOnly = ...;
vector<vector<Point> > contours;
int mode = externalOnly ? CV_RETR_EXTERNAL : CV_RETR_LIST;
int method = CHAIN_APPROX_SIMPLE;
cv::findContours(input, contours, mode, method);
vector<vector<Point> > contours;
// Find contours and store them in a list
findContours(gray, contours, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);
Şöyle yaparız.vector<vector<cv::Point> > contours;
cv::findContours(img, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
findCountours metodu - input + output + hierarchy + mode + methodİmzası şöyle
findContours(InputOutputArray image, OutputArrayOfArrays contours,
OutputArray hierarchy,int mode, int method, Point offset=Point());
Örnek - CV_RETR_CCOMPŞöyle yaparız.
vector<vector<Point>> contours; // Vector for storing contour
vector<Vec4i> hierarchy;
findContours(imgCanny, contours, hierarchy,
CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); // Find the contours in the image
Örnek - CV_RETR_LISTŞöyle yaparız
vector<vector<cv::Point> > contours;
vector<Vec4i> hierarchy;
findContours(edged, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_NONE);
Örnek
grayscale = inputFrame.gray();
Imgproc.Canny(grayscale, grayscale, 30, 200, 3, true);
Imgproc.findContours(grayscale, contours, hierarchy,
Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);
findCountours metodu - input + output + hierarchy + mode + method + point
Şöyle yaparız.
minAreaRect metodu
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
Mat input;
// Find contours
findContours(input, contours, hierarchy,
CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
Şöyle yaparız.
std::vector<std::vector<cv::Point > > contours;
cv::findContours(img, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
// now draw all the bounding rects, using drawContours function:
for (unsigned int i = 0; i < contours.size(); ++i)
{
cv::RotatedRect rect = cv::minAreaRect(contours[i]);
cv::Point2f points[4];
rect.points(points);
...
}
Hiç yorum yok:
Yorum Gönder