28 Eylül 2017 Perşembe

OpenCV Drawing Functions

Giriş
Java'da şu satırı dahil ederiz.
import org.opencv.imgproc.Imgproc;
arrowedLine metodu
LINE_AA antialiasing kullan anlamına gelir. Şöyle yaparız.
Point from(320, 240); //Middle
Point to(639, 240); //Right border
arrowedLine(image, from, to, Vec3b(0, 0, 0), 1, LINE_AA, 0, 0.1);
Antialiasing kullanmamak için şöyle yaparız.
arrowedLine(image, from, to, Vec3b(0, 0, 0), 1, LINE_8, 0, 0.1);
circle metodu
Bir resme daire çizer. 3.parametre yarıçap,4. parametre renk, 5.parametre thickness (bu değer eksi ise dairenin içi doldurulur), 6. parametre lineType, 7. parametre shift içindir. 7. parametreyi anlamadım.
Örnek
Mavi renkli daire çizmek için şöyle yaparız.
Point center = ...;
int radius = ...;
cv::circle (image, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );
Örnek
Mavi renkli daire çizmek için şöyle yaparız.
cv::Mat img = ...;

//draw the circle at the center of your image, with a radius of 50
cv::circle(img, cv::Point(img.rows/2, img.cols/2), 50, cv::Scalar(255, 0, 0),
  -1, 8, 0);
Örnek - filled
İçi doldurulan bir daire çizmek için CV_FILLED yani eksi bir değer veririz. Şöyle yaparız.
cv::circle(img, center, circle_radius, cv::Scalar(1.0, 1.0, 0.3), CV_FILLED);
Eğer için gradient doldurulan bir daire istersek şöyle yaparız.
void printGradient(cv::Mat &_input,const cv::Point &_center, const double radius)
{
  cv::circle(_input, _center, radius, cv::Scalar(0, 0, 0), -1);

  for(double i=1; i<radius; i=i++)
  {
    const int color = 255-int(i/radius * 255); //or some another color calculation
    cv::circle(_input,_center,i,cv::Scalar(color, color, color),2);
  }  
}

clipLine metodu
Örnek ver

ellipse metodu
Örnek ver

ellipse2Poly metodu
Örnek ver

fillConvexPoly metodu
Şöyle yaparız.
cv::Mat img = ...;
cv::Point pts[5] = {
    cv::Point(1, 6),
    cv::Point(2, 7),
    cv::Point(3, 8),
    cv::Point(4, 9),
    cv::Point(5, 10)
};
cv::fillConvexPoly (img, pts, 5, cv::Scalar(1) );

fillPoly metodu
Elimizde bir nokta dizisi olsun.
cv::Point corners[1][4];
corners[0][0] = Point( 10, 10 );
corners[0][1] = Point( 20, 20 );
corners[0][2] = Point( 30, 10 );
corners[0][3] = Point( 20, 10 );
const Point* corner_list[1] = { corners[0] };
Beyaz renk ile doldurmak için şöyle yaparız.
int num_points = 4;
int num_polygons = 1;
int line_type = 8;
cv::Mat mask(30,30,CV_8UC3, cv::Scalar(0,0,0));
cv::fillPoly( mask, corner_list, num_points, num_polygons,
 cv::Scalar( 255, 255, 255 ),  line_type);
Bu alanı başka bir yere kopyalamak için şöyle yaparız.
cv::Mat result;
cv::bitwise_and(source_image, mask, result);
getTextSize metodu
Örnek ver

InitFont metodu
Örnek ver

line metodu
Örnek ver

LineIterator metodu
Örnek ver

rectangle metodu - x1 , y1 , x2 , y2 , color
İmzası şöyle
void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color,
  int thickness=1, int lineType=8, int shift=0);
polylines metodu
Örnek ver

putText metodu
Örnek ver

Hiç yorum yok:

Yorum Gönder