[Explication] opencv opencv fonction de dessin et le paramètre de décalage

Interprétation opencv fonction de dessin et paramètre de décalage

Il y a beaucoup de paramètres de dessin OpenCV, leur fonction est définie comme suit:

1. Les fonctions de dessin de base

1.1 tracer une ligne droite

void line
(
	InputOutputArray img, 
	Point pt1, Point pt2,
 	const Scalar& color,
 	int thickness = 1,
	 int lineType = LINE_8,
	 int shift = 0
	 );

Le premier paramètre: tracer une ligne droite sur laquelle
le second argument: le point de départ d'une ligne droite
troisième paramètre: point de fin de la ligne
quatrième paramètre: Couleur
cinquième paramètre: largeur, lorsque la ligne de largeur est représentée par -1 lorsque le motif de remplissage
sixième paramètres: linéaire
septième paramètres: les paramètres d' échelle (décrit plus loin)

1.2 ellipse

void ellipse(
	InputOutputArray img,
 	Point center, 
	Size axes,
 	double angle, 
	double startAngle,
 	double endAngle,
 	const Scalar& color, 
	int thickness = 1,
	int lineType = LINE_8,
 	int shift = 0
);

Le second paramètre: au centre de l'ellipse dessin
troisième paramètre: la zone rectangulaire de l'ellipse axe principal et une longueur d'axe mineur de la frontière, dessiner une ellipse sur une région rectangulaire dans le
quatrième paramètre: l'angle de rotation de l'ellipse
cinquième paramètre: Dessin elliptique à partir angle
sixième paramètre: dessiner un angle d'extrémité elliptique
lorsque le paramètre cinquième et sixième est réglé sur 0 et 360 lorsque l'ellipse est un tour complet, ou fait partie d'une ligne d'ellipse.

1.3 ronde

void circle(
	InputOutputArray img,
 	Point center,
 	int radius,
 	const Scalar& color, 
	int thickness = 1,
	int lineType = LINE_8,
 	int shift = 0);

Relativement simple, ne pas expliquer la

1,4 Rectangle

void rectangle(
	CV_IN_OUT Mat& img,
 	Rect rec,
 	const Scalar& color, 
	int thickness = 1,
	int lineType = LINE_8, 
	int shift = 0
);

Relativement simple, ne pas expliquer la

1,5 Polygon

void fillPoly(
	Mat& img,
	 const Point** pts,
 	 const int* npts,
 	int ncontours,
 	const Scalar& color, 
	int lineType = LINE_8, 
	int shift = 0,
	Point offset = Point() );

Le second argument: Note est un pointeur à deux dimensions. dessin représentation point limite du polygone.
Le troisième paramètre: un pointeur sur une dimension, représente le nombre de point limite du polygone
quatrième paramètre: le nombre de polygones à tirer des
paramètres huitième: contour de décalage de l' ensemble en option

Exemples d'utilisation spécifique


 	Point p[1][5];  
	p[0][0] = Point(100, 100);
	p[0][1] = Point(100, 200);
	p[0][2] = Point(200, 300);
	p[0][3] = Point(300, 200);
	p[0][4] = Point(300, 100);
	const Point* ppt[1] = { p[0] };//多边形点集
	
	int npt[] = { 5 };//多边形点集的数量
	fillPoly(m, ppt, npt,1,Scalar(255, 0, 0), 8);

2. paramètres de décalage

Presque derrière chaque parcelle a une fonction de paramètre de décalage de type int, qui à la fin est de le faire? Après mes tests, je découvre ce changement est utilisé pour l'image réduite, et les coordonnées du point central de la longueur de la ligne sera réduite, la supposé que D, numérique original convertis numérique est d, la formule spécifique est:

d = D / 2 décalage

Les tests sont les suivants:

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;

int main()
{

	Mat m = imread("1.png");
	circle(m, Point(300, 300), 100, Scalar(0, 0, 255), 0, 8, 0);
	circle(m, Point(300, 300), 100, Scalar(0, 0, 255), 1, 8, 1);
	circle(m, Point(300, 300), 100, Scalar(0, 0, 255), 1, 8, 3);
	
	imshow("a", m);
	waitKey(0);
	return 0;
}

Ce qui précède est seulement le code de l'effet de décalage est
Insérer ici l'image Description
ensuite effectué les codes de commande suivants, il peut être vu en conformité avec 2 Maj exactement coïncider avec le cercle rouge multiple cercle noir étroit

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;

int main()
{

	Mat m = imread("1.png");

	circle(m, Point(300, 300), 100, Scalar(0, 0, 255), 0, 8, 0);
	
	circle(m, Point(300, 300), 100, Scalar(0, 0, 255), 1, 8, 1);
	circle(m, Point(300/2, 300/2), 100/2, Scalar(0, 0, 0), 1, 8, 0); //与上一个红色圈重合
	
	circle(m, Point(300, 300), 100, Scalar(0, 0, 255), 1, 8, 3);
	circle(m, Point(300 / 8, 300 / 8), 100 / 8, Scalar(0, 0, 0), 1, 8, 0);//与上一个红色圈重合
	
	imshow("a", m);
	waitKey(0);
	return 0;
}


Insérer ici l'image Description

Publié 14 articles originaux · louange gagné 1 · vues 502

Je suppose que tu aimes

Origine blog.csdn.net/qq_41741344/article/details/104347443
conseillé
Classement