OpenCV  4.10.0
开源计算机视觉
加载数据...
搜索中...
无匹配
| 宏定义 | 枚举 | 函数
绘图函数

详细描述

绘图函数与任意深度的矩阵/图像一起工作。形状的边界可以通过抗锯齿(目前仅对8位图像实现)进行渲染。所有函数都包括颜色参数,该参数使用RGB值(可以使用Scalar构造函数创建)用于彩色图像和亮度用于灰度图像。对于彩色图像,通道顺序通常是蓝色、绿色、红色。imshow、imread和imwrite期望的就是这样。因此,如果您使用Scalar构造函数创建颜色,它应该看起来像这样

\[\texttt{Scalar} (blue\_component, green\_component, red\_component[, alpha\_component])\]

如果您正在使用您自己的图像渲染和I/O函数,您可以使用任何通道顺序。绘图函数独立处理每个通道,并且不依赖于通道顺序或甚至不依赖于使用的颜色空间。可以使用cvtColor将整个图像从BGR转换为RGB或转换为不同的颜色空间。

如果绘制的图形部分或全部在图像外,绘图函数会将其裁剪。此外,许多绘图函数可以处理带有亚像素精度的像素坐标。这意味着可以将坐标作为整数编码的定点数传递。小数位的数量由移位参数指定,实际点坐标计算为\(\texttt{Point}(x,y) \rightarrow \texttt{Point2f}(x*2^{-shift}, y*2^{-shift})\)。该功能在渲染抗锯齿形状时特别有效。

注意
当目标图像是4通道时,这些函数不支持带有alpha透明度的alpha透明度。在这种情况下,颜色[3]简单地复制到重绘的像素中。因此,如果您想绘制半透明形状,可以在单独的缓冲区中绘制它们,然后与主图像混合。

类 cv::LineIterator
 该类用于遍历扫描线段上的所有像素。更多信息...
 

宏定义

#define CV_RGB(r, g, b)   cv::Scalar((b), (g), (r), 0)
 

枚举

枚举  cv::HersheyFonts {
  cv::FONT_HERSHEY_SIMPLEX = 0 ,
  cv::FONT_HERSHEY_PLAIN = 1 ,
  cv::FONT_HERSHEY_DUPLEX = 2 ,
  cv::FONT_HERSHEY_COMPLEX = 3 ,
  cv::FONT_HERSHEY_TRIPLEX = 4 ,
  cv::FONT_HERSHEY_COMPLEX_SMALL = 5 ,
  cv::FONT_HERSHEY_SCRIPT_SIMPLEX = 6 ,
  cv::FONT_HERSHEY_SCRIPT_COMPLEX = 7 ,
  cv::FONT_ITALIC = 16
}
 
枚举  cv::LineTypes {
  cv::FILLED = -1 ,
  cv::LINE_4 = 4 ,
  cv::LINE_8 = 8 ,
  cv::LINE_AA = 16
}
 
枚举  cv::MarkerTypes {
  cv::MARKER_CROSS = 0 ,
  cv::MARKER_TILTED_CROSS = 1 ,
  cv::MARKER_STAR = 2 ,
  cv::MARKER_DIAMOND = 3 ,
  cv::MARKER_SQUARE = 4 ,
  cv::MARKER_TRIANGLE_UP = 5 ,
  cv::MARKER_TRIANGLE_DOWN = 6
}
 

函数

void cv::arrowedLine (InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int line_type=8, int shift=0, double tipLength=0.1)
 绘制从第一个点到第二个点的箭头段。
 
void cv::circle (InputOutputArray img, Point center, int radius, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 绘制圆形。
 
bool cv::clipLine (Rect imgRect, Point &pt1, Point &pt2)
 
bool cv::clipLine (Size imgSize, Point &pt1, Point &pt2)
 将直线限制在图像矩形内。
 
bool cv::clipLine (Size2l imgSize, Point2l &pt1, Point2l &pt2)
 
void cv::drawContours (InputOutputArray image, InputArrayOfArrays contours, int contourIdx, const Scalar &color, int thickness=1, int lineType=LINE_8, InputArray hierarchy=noArray(), int maxLevel=INT_MAX, Point offset=Point())
 绘制轮廓外沿或填充轮廓。
 
void cv::drawMarker (InputOutputArray img, Point position, const Scalar &color, int markerType=MARKER_CROSS, int markerSize=20, int thickness=1, int line_type=8)
 在图像中的预定义位置绘制标记。
 
void cv::ellipse (InputOutputArray img, const RotatedRect &box, const Scalar &color, int thickness=1, int lineType=LINE_8)
 
void cv::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)
 绘制简单或粗椭圆弧或填充椭圆扇区。
 
void cv::ellipse2Poly (Point center, Size axes, int angle, int arcStart, int arcEnd, int delta, std::vector> Point &pts)
 用折线近似椭圆弧。
 
void cv::ellipse2Poly (Point2d center, Size2d axes, int angle, int arcStart, int arcEnd, int delta, std::vector> Point2d &pts)
 
void cv::fillConvexPoly (InputOutputArray img, const Point *pts, int npts, const Scalar &color, int lineType=LINE_8, int shift=0)
 
void cv::fillConvexPoly (InputOutputArray img, InputArray points, const Scalar &color, int lineType=LINE_8, int shift=0)
 绘制凸多边形。
 
void cv::fillPoly (InputOutputArray img, const Point **pts, const int *npts, int ncontours, const Scalar &color, int lineType=LINE_8, int shift=0, Point offset=Point())
 
void cv::fillPoly (InputOutputArray img, InputArrayOfArrays pts, const Scalar &color, int lineType=LINE_8, int shift=0, Point offset=Point())
 填充一个或多个多边形围成的区域。
 
double cv::getFontScaleFromHeight (const int fontFace, const int pixelHeight, const int thickness=1)
 计算适用于像素高度的字体大小。
 
Size cv::getTextSize (const String &text, int fontFace, double fontScale, int thickness, int *baseLine)
 计算文本字符串的宽度和高度。
 
void cv::line (InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 绘制连接两个点的线段。
 
void cv::polylines (InputOutputArray img, const Point *const *pts, const int *npts, int ncontours, bool isClosed, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 
void cv::polylines (InputOutputArray img, InputArrayOfArrays pts, bool isClosed, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 绘制多个多边形曲线。
 
void cv::putText (InputOutputArray img, const String &text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=LINE_8, bool bottomLeftOrigin=false)
 绘制文本字符串。
 
void cv::rectangle (InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 绘制简单的、粗边的或填充的垂直矩形。
 
void cv::rectangle (InputOutputArray img, Rect rec, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 

宏定义文档

◆ CV_RGB

#define CV_RGB (   r,
  g,
 
)    cv::Scalar((b), (g), (r), 0)

#include <opencv2/imgproc.hpp>

OpenCV颜色通道顺序为BGR[A]

枚举类型文档

◆ HersheyFonts

#include <opencv2/imgproc.hpp>

只支持Hershey字体 https://en.wikipedia.org/wiki/Hershey_fonts 的子集

枚举器
FONT_HERSHEY_SIMPLEX 
Python: cv.FONT_HERSHEY_SIMPLEX

标准尺寸的无衬线字体

FONT_HERSHEY_PLAIN 
Python: cv.FONT_HERSHEY_PLAIN

小型无衬线字体

FONT_HERSHEY_DUPLEX 
Python: cv.FONT_HERSHEY_DUPLEX

标准尺寸的无衬线字体(比FONT_HERSHEY_SIMPLEX更复杂)

FONT_HERSHEY_COMPLEX 
Python: cv.FONT_HERSHEY_COMPLEX

标准尺寸的衬线字体

FONT惠民彩票专业版彩票规律够够能搏一搏 让心态变更好兼收并蓄中
Python: cv.FONT惠民彩票专业版彩票规律够够能搏一搏 让心态变更好兼收并蓄中

标准尺寸的衬线字体(比FONT惠民彩票专业版彩票规律够够能搏一搏 让心态变更好兼收并蓄中更复杂)

FONT惠民彩票专业版彩票规律够够能搏一搏 让心态变更好兼收并蓄中 
Python: cv.FONT惠民彩票专业版彩票规律够够能搏一搏 让心态变更好兼收并蓄中

FONT惠民彩票专业版彩票规律够够能搏一搏 让心态变更好兼收并蓄中的小版本

FONT惠民彩票专业版彩票规律够够能搏一搏 让心态变更好兼收并蓄中 
Python: cv.FONT惠民彩票专业版彩票规律够够能搏一搏 让心态变更好兼收并蓄中

手写风格字体

FONT_HERSHEY_SCRIPT_COMPLEX 
Python: cv.FONT_HERSHEY_SCRIPT_COMPLEX

更加复杂的 FONT_HERSHEY_SCRIPT_SIMPLEX 变异

FONT_ITALIC 
Python: cv.FONT_ITALIC

斜体字体标志

◆ LineTypes

枚举 cv::LineTypes

#include <opencv2/imgproc.hpp>

线的类型

枚举器
FILLED 
Python: cv.FILLED
LINE_4 
Python: cv.LINE_4

4连通线

LINE_8 
Python: cv.LINE_8

8连通线

LINE_AA 
Python: cv.LINE_AA

抗锯齿线

◆ MarkerTypes

#include <opencv2/imgproc.hpp>

用于 cv::drawMarker 函数的可能标记类型集合

枚举器
MARKER_CROSS 
Python: cv.MARKER_CROSS

十字准线标记形状。

MARKER_TILTED_CROSS 
Python: cv.MARKER_TILTED_CROSS

45度倾斜的十字准线标记形状。

MARKER_STAR 
Python: cv.MARKER_STAR

星型标记形状,交又和倾斜交又的组合。

MARKER_DIAMOND 
Python: cv.MARKER_DIAMOND

菱形标记形状。

MARKER_SQUARE 
Python: cv.MARKER_SQUARE

正方形标记形状。

MARKER_TRIANGLE_UP 
Python: cv.MARKER_TRIANGLE_UP

向上指的三角形标记形状。

MARKER_TRIANGLE_DOWN 
Python: cv.MARKER_TRIANGLE_DOWN

向下指的三角形标记形状。

函数文档

◆ arrowedLine()

void cv::arrowedLine ( InputOutputArray  img,
Point  pt1,
Point  pt2,
const Scalar color,
int  thickness = 1,
int  line_type = 8,
int  shift = 0,
double  tipLength = 0.1 
)
Python
cv.arrowedLine(img, pt1, pt2, color[, thickness[, line_type[, shift[, tipLength]]]]) -> img

#include <opencv2/imgproc.hpp>

绘制从第一个点到第二个点的箭头段。

函数 cv::arrowedLine 在图像中绘制从 pt1 到 pt2 的箭头。另请参阅 line

参数
img图像。
pt1箭头开始的点。
pt2箭头指向的点。
color线条颜色。
厚度线条厚度。
line_type线的类型。请参阅 LineTypes
shift点坐标中的分数位数量。
tipLength箭头尖部与箭头长度相关的长度

◆ circle()

void cv::circle ( InputOutputArray  img,
Point  center,
int  radius,
const Scalar color,
int  thickness = 1,
int  lineType = LINE_8,
int  shift = 0 
)
Python
cv.circle(img, center, radius, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

绘制圆形。

函数 cv::circle 以给定的中心和半径绘制简单的或填充的圆。

参数
img绘制圆的图像。
center圆心。
radius圆的半径。
color圆的颜色。
厚度圆轮廓的粗细,如果是正数。负值,如 FILLED,表示要绘制填充圆。
lineType圆边界类型。参见 LineTypes
shift中心坐标和半径值中分数位的数量。

◆ clipLine() [1/3]

bool cv::clipLine ( Rect  imgRect,
Point pt1,
Point pt2 
)
Python
cv.clipLine(imgRect, pt1, pt2) -> retval, pt1, pt2

#include <opencv2/imgproc.hpp>

这是一个提供方便的重载成员函数,它与上述函数不同的是它接受的参数。

参数
imgRect图像矩形。
pt1第一条线的点。
pt2第二条线的点。

◆ clipLine() [2/3]

bool cv::clipLine ( Size  imgSize,
Point pt1,
Point pt2 
)
Python
cv.clipLine(imgRect, pt1, pt2) -> retval, pt1, pt2

#include <opencv2/imgproc.hpp>

将直线限制在图像矩形内。

函数 cv::clipLine 将线段计算为位于指定矩形内的部分。如果线段完全在矩形外部,它返回 false。否则,它返回 true。

参数
imgSize图像大小。图像矩形是 Rect(0, 0, imgSize.width, imgSize.height)。
pt1第一条线的点。
pt2第二条线的点。

◆ clipLine() [3/3]

bool cv::clipLine ( Size2l  imgSize,
Point2l pt1,
Point2l pt2 
)
Python
cv.clipLine(imgRect, pt1, pt2) -> retval, pt1, pt2

#include <opencv2/imgproc.hpp>

这是一个提供方便的重载成员函数,它与上述函数不同的是它接受的参数。

参数
imgSize图像大小。图像矩形是 Rect(0, 0, imgSize.width, imgSize.height)。
pt1第一条线的点。
pt2第二条线的点。

◆ drawContours()

void cv::drawContours ( InputOutputArray  image,
InputArrayOfArrays  contours,
int  contourIdx,
const Scalar color,
int  thickness = 1,
int  lineType = LINE_8,
InputArray  hierarchy = noArray(),
int  maxLevel = INT_MAX,
Point  offset = Point() 
)
Python
cv.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]]) -> image

#include <opencv2/imgproc.hpp>

绘制轮廓外沿或填充轮廓。

如果 \(\texttt{thickness} \ge 0\),函数 cv::drawContours 在图像中绘制轮廓线,如果 \(\texttt{thickness}<0\),则填充轮廓定义的区域。以下示例展示了如何从二值图像中检索连通组件并对其进行标记:

using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
Mat src;
// 第一个命令行参数必须是二进制图像的文件名
//(黑白)图像
if( argc != 2 || !(src=imread(argv[1], IMREAD_GRAYSCALE)).data)
return -1;
Mat dst = Mat::zeros(src.rows, src.cols, CV_8UC3);
src = src > 1;
namedWindow( "Source", 1 );
imshow( "Source", src );
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours( src, contours, hierarchy,
// 遍历所有顶层轮廓,
// 使用各自随机颜色绘制每个连通组件
int idx = 0;
for( ; idx >= 0; idx = hierarchy[idx][0] )
{
Scalar color( rand()&255, rand()&255, rand()&255 );
drawContours( dst, contours, idx, color, FILLED, 8, hierarchy );
}
namedWindow( "Components", 1 );
imshow( "Components", dst );
waitKey(0);
}
n维稠密数组类
定义 mat.hpp:812
static CV_NODISCARD_STD MatExpr zeros(int rows, int cols, int type)
返回指定大小和类型的零数组。
int cols
定义 mat.hpp:2138
int rows
行数和列数,当矩阵有超过2维时为(-1, -1)
定义 mat.hpp:2138
#define CV_8UC3
定义 interface.h:90
void imshow(const String &winname, InputArray mat)
在指定窗口中显示图像。
int waitKey(int delay=0)
等待按键。
void namedWindow(const String &winname, int flags=WINDOW_AUTOSIZE)
创建窗口。
@ IMREAD_GRAYSCALE
如果设置,始终将图像转换为单通道的灰度图像(编码内部转换)。
定义 imgcodecs.hpp:70
CV_EXPORTS_W Mat imread(const String &filename, int flags=IMREAD_COLOR)
从文件中加载图像。
void drawContours(InputOutputArray image, InputArrayOfArrays contours, int contourIdx, const Scalar &color, int thickness=1, int lineType=LINE_8, InputArray hierarchy=noArray(), int maxLevel=INT_MAX, Point offset=Point())
绘制轮廓外沿或填充轮廓。
@ FILLED
定义 imgproc.hpp:891
void findContours(InputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point())
在二值图像中查找轮廓。
@ CHAIN_APPROX_SIMPLE
定义 imgproc.hpp:446
@ RETR_CCOMP
定义 imgproc.hpp:432
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
磁盘上文件的存储与文件相关联的“黑盒”表示。
定义 core.hpp:102
STL命名空间。
参数
image目标图像。
contours所有输入轮廓。每个轮廓存储为点向量。
contourIdx参数指示要绘制的轮廓。如果是负数,则绘制所有轮廓。
color轮廓的颜色。
厚度绘制轮廓的线的粗细。如果是负数(例如,厚度=FILLED),则绘制轮廓内部。
lineType线条连接性。见LineTypes
hierarchy有关层次结构的可选信息。只有在您只想绘制一些轮廓(参见maxLevel)时才需要。
maxLevel绘制轮廓的最大级别。如果它是0,则只绘制指定的轮廓。如果它是1,则函数绘制轮廓及其所有嵌套轮廓。如果它是2,则函数绘制轮廓、所有嵌套轮廓、所有嵌套到嵌套轮廓,依此类推。当有层次结构可用时才考虑此参数。
offset可选的轮廓平移参数。将所有绘制的轮廓平移指定的 \(\texttt{offset}=(dx,dy)\) 。
注意
当厚度=FILLED时,即使没有提供层次数据,此函数也旨在正确处理具有孔洞的连接组件。这是通过使用偶-奇规则一起分析所有轮廓来完成的。如果您的轮廓集合是分别检索的,则可能会给出错误的结果。为了解决这个问题,您需要为每个轮廓子组单独调用drawContours,或使用轮廓索引参数遍历集合。

◆ drawMarker()

void cv::drawMarker ( InputOutputArray  img,
Point  位置,
const Scalar color,
int  标记类型 = MARKER_CROSS,
int  标记大小 = 20,
int  thickness = 1,
int  线类型 = 8 
)
Python
cv.drawMarker(img, position, color[, markerType[, markerSize[, thickness[, line_type]]]]) -> img

#include <opencv2/imgproc.hpp>

在图像中的预定义位置绘制标记。

cv::drawMarker函数在图像的给定位置绘制标记。目前支持几种标记类型,有关更多信息,请参阅MarkerTypes

参数
img图像。
位置十字准线定位的点。
color线条颜色。
标记类型您想使用的特定标记类型,请参阅MarkerTypes
厚度线条厚度。
line_type线条类型,见LineTypes
标记大小标记轴长度[默认=20像素]

◆ ellipse() [1/2]

void cv::ellipse ( InputOutputArray  img,
const RotatedRect box,
const Scalar color,
int  thickness = 1,
int  线类型 = LINE_8 
)
Python
cv.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]) -> img
cv.ellipse(img, box, color[, thickness[, lineType]]) -> img

#include <opencv2/imgproc.hpp>

这是一个提供方便的重载成员函数,它与上述函数不同的是它接受的参数。

参数
img图像。
box通过 RotatedRect 的椭圆表示方法。这意味着该函数绘制的是一个内嵌于旋转矩形的椭圆。
color椭圆的颜色。
厚度椭圆弧轮廓的厚度,如果为正。否则,这表明要绘制一个填充的椭圆扇区。
lineType椭圆边界的类型。参见 LineTypes

◆ ellipse() [2/2]

void cv::ellipse ( InputOutputArray  img,
Point  center,
Size  坐标轴,
double  角度,
double  起始角度,
double  终止角度,
const Scalar color,
int  thickness = 1,
int  lineType = LINE_8,
int  shift = 0 
)
Python
cv.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]) -> img
cv.ellipse(img, box, color[, thickness[, lineType]]) -> img

#include <opencv2/imgproc.hpp>

绘制简单或粗椭圆弧或填充椭圆扇区。

传播带有更多参数的 cv::ellipse,可以绘制椭圆轮廓、填充的椭圆、椭圆弧或填充的椭圆扇区。绘图代码使用通用参数方程形式。使用分段线性曲线来近似椭圆弧边界。如果您需要更精细的椭圆渲染控制,可以使用 ellipse2Poly 获取曲线,然后使用 polylines 或使用 fillPoly 填充它。如果您使用函数的第一个变体并且想要绘制整个椭圆而不是弧,请传递 startAngle=0endAngle=360。如果 startAngle 大于 endAngle,它们将会交换。下面的图示解释了绘制蓝色弧线的参数含义。

椭圆弧参数
参数
img图像。
center椭圆中心。
坐标轴椭圆主轴大小的半值。
角度椭圆旋转角度(度)。
起始角度椭圆弧起始角度(度)。
终止角度椭圆弧结束角度(度)。
color椭圆的颜色。
厚度椭圆弧轮廓的厚度,如果为正。否则,这表明要绘制一个填充的椭圆扇区。
lineType椭圆边界的类型。参见 LineTypes
shift坐标中心和轴值中的分数位数。

◆ ellipse2Poly() [1/2]

void cv::ellipse2Poly ( Point  center,
Size  坐标轴,
int  角度,
int  弧起始点,
int  弧终点,
int  delta,
std::vector< Point > &  pts 
)
Python
cv.ellipse2Poly(center, axes, angle, arcStart, arcEnd, delta) -> pts

#include <opencv2/imgproc.hpp>

用折线近似椭圆弧。

函数 ellipse2Poly 计算近似指定椭圆弧的多边形顶点。它由 ellipse 使用。如果 arcStart 大于 arcEnd,它们将会交换。

参数
center弧中心。
坐标轴椭圆主轴大小的半值。参见 ellipse 以获取更多详情。
角度椭圆的旋转角度(度)。参见 ellipse 以获取更多详情。
弧起始点椭圆弧起始角度(度)。
弧终点椭圆弧结束角度(度)。
delta后续多边形顶点之间的角度。它定义了逼近精度。
pts输出多边形顶点的向量。

◆ ellipse2Poly() [2/2]

void cv::ellipse2Poly ( Point2d  center,
Size2d  坐标轴,
int  角度,
int  弧起始点,
int  弧终点,
int  delta,
std::vector< Point2d > &  pts 
)
Python
cv.ellipse2Poly(center, axes, angle, arcStart, arcEnd, delta) -> pts

#include <opencv2/imgproc.hpp>

这是一个提供方便的重载成员函数,它与上述函数不同的是它接受的参数。

参数
center弧中心。
坐标轴椭圆主轴大小的半值。参见 ellipse 以获取更多详情。
角度椭圆的旋转角度(度)。参见 ellipse 以获取更多详情。
弧起始点椭圆弧起始角度(度)。
弧终点椭圆弧结束角度(度)。
delta后续多边形顶点之间的角度。它定义了逼近精度。
pts输出多边形顶点的向量。

◆ fillConvexPoly() [1/2]

void cv::fillConvexPoly ( InputOutputArray  img,
const Point pts,
int  npts,
const Scalar color,
int  lineType = LINE_8,
int  shift = 0 
)
Python
cv.fillConvexPoly(img, points, color[, lineType[, shift]]) -> img

#include <opencv2/imgproc.hpp>

这是一个提供方便的重载成员函数,它与上述函数不同的是它接受的参数。

◆ fillConvexPoly() [2/2]

void cv::fillConvexPoly ( InputOutputArray  img,
InputArray  points,
const Scalar color,
int  lineType = LINE_8,
int  shift = 0 
)
Python
cv.fillConvexPoly(img, points, color[, lineType[, shift]]) -> img

#include <opencv2/imgproc.hpp>

绘制凸多边形。

函数 cv::fillConvexPoly 绘制填充的凸多边形。该函数比函数 fillPoly 要快得多。它可以填充的不仅限于凸多边形,任何单调多边形(没有自交叉)也可以,即多边形轮廓与每条水平线(扫描线)相交最多两次(尽管,它的顶部和/或底部边缘可以是水平的)。

参数
img图像。
points多边形顶点。
color多边形颜色。
lineType多边形边界类型。请参见 LineTypes
shift顶点坐标中的小数位数的数量。

◆ fillPoly() [1/2]

void cv::fillPoly ( InputOutputArray  img,
const Point **  pts,
const int *  npts,
int  ncontours,
const Scalar color,
int  lineType = LINE_8,
int  shift = 0,
Point  offset = Point() 
)
Python
cv.fillPoly(img, pts, color[, lineType[, shift[, offset]]]) -> img

#include <opencv2/imgproc.hpp>

这是一个提供方便的重载成员函数,它与上述函数不同的是它接受的参数。

◆ fillPoly() [2/2]

void cv::fillPoly ( InputOutputArray  img,
InputArrayOfArrays  pts,
const Scalar color,
int  lineType = LINE_8,
int  shift = 0,
Point  offset = Point() 
)
Python
cv.fillPoly(img, pts, color[, lineType[, shift[, offset]]]) -> img

#include <opencv2/imgproc.hpp>

填充一个或多个多边形围成的区域。

函数 cv::fillPoly 填充由多个多边形轮廓界定的区域。该函数可以填充复杂区域,例如有孔区域、有自交叉的轮廓(部分区域)等。

参数
img图像。
pts表示每个多边形为点数组的数组。
color多边形颜色。
lineType多边形边界类型。请参见 LineTypes
shift顶点坐标中的小数位数的数量。
offset轮廓的所有点的可选偏移。

◆ getFontScaleFromHeight()

double cv::getFontScaleFromHeight ( const int  fontFace,
const int  pixelHeight,
const int  thickness = 1 
)
Python
cv.getFontScaleFromHeight(fontFace, pixelHeight[, thickness]) -> retval

#include <opencv2/imgproc.hpp>

计算适用于像素高度的字体大小。

参数
fontFace要使用的字体,请参见 cv::HersheyFonts.
pixelHeight要计算字体Scale的像素高度
厚度渲染文本时使用的线条粗细。请参见 putText 获取详情。
返回值
用于 cv::putText 的 fontSize
另请参阅
cv::putText

◆ getTextSize()

Size cv::getTextSize ( const String text,
int  fontFace,
double  fontScale,
int  厚度,
int *  baseLine 
)
Python
cv.getTextSize(text, fontFace, fontScale, thickness) -> retval, baseLine

#include <opencv2/imgproc.hpp>

计算文本字符串的宽度和高度。

函数 cv::getTextSize 计算并返回包含指定文本的框的大小。即以下代码渲染一些文本,其周围的紧密框和基线:

String text = "Funny text inside the box";
double fontScale = 2;
int thickness = 3;
Mat img(600, 800, CV_8UC3, Scalar::all(0));
int baseline=0;
Size textSize = getTextSize(text, fontFace,
fontScale, thickness, &baseLine);
baseLine += thickness;
// 居中文本
Point textOrg((img.cols - textSize.width)/2,
(img.rows + textSize.height)/2);
// 绘制框
rectangle(img, textOrg + Point(0, baseLine),
textOrg + Point(textSize.width), -textSize.height),
Scalar(0,0,255));
// ...并且先绘制基线
line(img, textOrg + Point(0, thickness),
textOrg + Point(textSize.width, thickness),
Scalar(0, 0, 255));
// 然后,放置文本本身
putText(img, text, textOrg, fontFace, fontScale,
Scalar::all(255), thickness, 8);
static Scalar_< double > all(double v0)
返回所有元素设置为v0的标量
用于指定图像或矩形的大小的模板类。
定义 types.hpp:335
_Tp height
高度
定义 types.hpp:363
_Tp width
宽度
定义 types.hpp:362
Point2i Point
定义 types.hpp:209
std::string String
定义 cvstd.hpp:151
void rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
绘制简单的、粗边的或填充的垂直矩形。
Size getTextSize(const String &text, int fontFace, double fontScale, int thickness, int *baseLine)
计算文本字符串的宽度和高度。
void putText(InputOutputArray img, const String &text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=LINE_8, bool bottomLeftOrigin=false)
绘制文本字符串。
void line(InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
绘制连接两个点的线段。
@ FONT_HERSHEY_SCRIPT_SIMPLEX
手写风格字体
定义 imgproc.hpp:907
参数
text输入文本字符串。
fontFace要使用的字体,请参阅HersheyFonts
fontScale字体缩放因子,它乘以字体特定的基础大小。
厚度用于渲染文本的线条宽度。有关详细信息,请参阅putText
[out]baseLine基线相对于最低文本点的y坐标。
返回值
包含指定文本的框的大小。
另请参阅
putText

◆ line()

void cv::line ( InputOutputArray  img,
Point  pt1,
Point  pt2,
const Scalar color,
int  thickness = 1,
int  lineType = LINE_8,
int  shift = 0 
)
Python
cv.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

绘制连接两个点的线段。

此函数line在图像中绘制pt1和pt2点之间的线段。线条被图像边界裁剪。对于具有整数坐标的非抗锯齿线条,使用8连接或4连接的Bresenham算法。粗线条采用圆滑端绘制。抗锯齿线条使用高斯滤波绘制。

参数
img图像。
pt1线段的第一个点。
pt2线段的第二个点。
color线条颜色。
厚度线条厚度。
lineType线条类型。请参阅LineTypes
shift点坐标中的分数位数量。

◆ polylines() [1/2]

void cv::polylines ( InputOutputArray  img,
const Point *const *  pts,
const int *  npts,
int  ncontours,
bool  isClosed,
const Scalar color,
int  thickness = 1,
int  lineType = LINE_8,
int  shift = 0 
)
Python
cv.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

这是一个提供方便的重载成员函数,它与上述函数不同的是它接受的参数。

◆ polylines() [2/2]

void cv::polylines ( InputOutputArray  img,
InputArrayOfArrays  pts,
bool  isClosed,
const Scalar color,
int  thickness = 1,
int  lineType = LINE_8,
int  shift = 0 
)
Python
cv.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

绘制多个多边形曲线。

参数
img图像。
pts多边形曲线数组。
isClosed指示绘制的多边形是否闭合的标志。如果它们闭合,则从每个曲线的最后一个顶点绘制线条到其第一个顶点。
color多边形颜色。
厚度多边形边框的厚度。
lineType线条段类型。请参阅LineTypes
shift顶点坐标中的小数位数的数量。

函数cv::polylines绘制一个或多个多边形曲线。

◆ putText()

void cv::putText ( InputOutputArray  img,
const String text,
Point  org,
int  fontFace,
double  fontScale,
Scalar  color,
int  thickness = 1,
int  lineType = LINE_8,
bool  bottomLeftOrigin = false 
)
Python
cv.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]]) -> img

#include <opencv2/imgproc.hpp>

绘制文本字符串。

函数cv::putText在图像中渲染指定的文本字符串。无法使用指定字体显示的符号由问号替换。请参阅getTextSize以获取文本渲染的示例代码。

参数
img图像。
text要绘制的文本字符串。
org文本字符串在图像中的左下角。
fontFace字体类型,请参阅HersheyFonts
fontScale字体缩放因子,它乘以字体特定的基础大小。
color文本颜色。
厚度绘制文本的线条厚度。
lineType线条类型。请参阅LineTypes
bottomLeftOrigin当为true时,图像数据原点位于左下角。否则,在左上角。
示例
samples/cpp/fitellipse.cpp.

◆ rectangle() [1/2]

void cv::rectangle ( InputOutputArray  img,
Point  pt1,
Point  pt2,
const Scalar color,
int  thickness = 1,
int  lineType = LINE_8,
int  shift = 0 
)
Python
cv.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) -> img
cv.rectangle(img, rec, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

绘制简单的、粗边的或填充的垂直矩形。

函数cv::rectangle绘制由pt1和pt2的两对相对顶点定义的矩形轮廓或填充矩形。

参数
img图像。
pt1矩形的顶点。
pt2pt1的对应顶点。
color矩形颜色或亮度(灰度图像)。
厚度构成矩形的线条的厚度。负值(如FILLED)表示函数必须绘制填充矩形。
lineType线的类型。请参阅 LineTypes
shift点坐标中的分数位数量。

◆ rectangle() [2/2]

void cv::rectangle ( InputOutputArray  img,
Rect  rec,
const Scalar color,
int  thickness = 1,
int  lineType = LINE_8,
int  shift = 0 
)
Python
cv.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) -> img
cv.rectangle(img, rec, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

这是一个提供方便的重载成员函数,它与上述函数不同的是它接受的参数。

使用rec参数作为绘制矩形的替代指定:r.tl()和r.br()-Point(1,1)是相对角落