OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
绘图函数

详细描述

绘图函数可处理任意深度的矩阵/图像。形状的边界可以使用抗锯齿渲染(目前仅对 8 位图像实现)。所有函数都包含 color 参数,该参数对彩色图像使用 RGB 值(可以使用 Scalar 构造函数构建),对灰度图像使用亮度。对于彩色图像,通道顺序通常为蓝、绿、红。imshow、imread 和 imwrite 预期使用此顺序。因此,如果使用 Scalar 构造函数形成颜色,则应如下所示:

\[\texttt{Scalar} (蓝色分量, 绿色分量, 红色分量[, alpha 分量])\]

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

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

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

类 cv::LineIterator
 用于迭代光栅线段上所有像素的类。更多…
 

#define CV_RGB(r, g, b)
 

枚举

枚举 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(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(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,
b )

#include <opencv2/imgproc.hpp>

cv::Scalar((b), (g), (r), 0)
Scalar_< double > Scalar
定义 types.hpp:709

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_HERSHEY_TRIPLEX 
Python: cv.FONT_HERSHEY_TRIPLEX

普通大小的有衬线字体(比 FONT_HERSHEY_COMPLEX 更复杂)

FONT_HERSHEY_COMPLEX_SMALL 
Python: cv.FONT_HERSHEY_COMPLEX_SMALL

FONT_HERSHEY_COMPLEX 的较小版本

FONT_HERSHEY_SCRIPT_SIMPLEX 
Python: cv.FONT_HERSHEY_SCRIPT_SIMPLEX

手写风格字体

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

反锯齿线

◆ 标记类型

#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 ( 输入输出数组 img,
pt1,
pt2,
const Scalar & 颜色,
整数 粗细 = 1,
整数 线条类型 = 8,
整数 位移 = 0,
双精度浮点数 箭头长度 = 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箭头指向点。
颜色线条颜色。
粗细线条粗细。
线条类型线条类型。参见 LineTypes
位移点坐标中的分数位数。
箭头长度相对于箭头长度的箭头尖端长度

◆ circle()

void cv::circle ( 输入输出数组 img,
圆心,
整数 半径,
const Scalar & 颜色,
整数 粗细 = 1,
整数 线条类型 = LINE_8,
整数 位移 = 0 )
Python
cv.circle(img, center, radius, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

绘制一个圆。

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

参数
img绘制圆形的图像。
圆心圆心。
半径圆的半径。
颜色圆的颜色。
粗细圆轮廓的粗细,如果为正数。负值,如 FILLED,表示要绘制填充圆。
线条类型圆边界的类型。参见 LineTypes
位移中心坐标和半径值中的分数位数。

◆ clipLine() [1/3]

bool cv::clipLine ( 矩形 imgRect,
& pt1,
& pt2 )
Python
cv.clipLine(imgRect, pt1, pt2) -> retval, pt1, pt2

#include <opencv2/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

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

◆ clipLine() [2/3]

bool cv::clipLine ( 尺寸 imgSize,
& pt1,
& 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 ( 输入输出数组 图像,
输入数组数组 轮廓,
整数 轮廓索引,
const Scalar & 颜色,
整数 粗细 = 1,
整数 线条类型 = LINE_8,
输入数组 层次结构 = noArray(),
整数 最大层级 = INT_MAX,
偏移量 = Point() )
Python
cv.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]]) -> 图像

#include <opencv2/imgproc.hpp>

绘制轮廓线或填充轮廓。

如果\(\texttt{thickness} \ge 0\) ,则函数在图像中绘制轮廓轮廓;如果\(\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; -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,
RETR_CCOMP, CHAIN_APPROX_SIMPLE );
// 遍历所有顶层轮廓,
// 使用其自身的随机颜色绘制每个连通分量
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:829
int cols
定义 mat.hpp:2155
int rows
行数和列数,当矩阵维度超过2维时为(-1, -1)
定义 mat.hpp:2155
#define CV_8UC3
定义 interface.h:90
void imshow(const String &winname, InputArray mat)
在指定的窗口中显示图像。
void namedWindow(const String &winname, int flags=WINDOW_AUTOSIZE)
创建一个窗口。
CV_EXPORTS_W Mat imread(const String &filename, int flags=IMREAD_COLOR_BGR)
从文件中加载图像。
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())
绘制轮廓线或填充轮廓。
void findContours(InputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point())
在二值图像中查找轮廓。
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
定义 core.hpp:107
STL 命名空间。
参数
图像目标图像。
轮廓所有输入轮廓。每个轮廓都存储为一个点向量。
轮廓索引指示要绘制的轮廓的参数。如果它是负数,则绘制所有轮廓。
颜色轮廓的颜色。
粗细绘制轮廓的线条粗细。如果为负数(例如,thickness=FILLED),则绘制轮廓内部。
线条类型线条连接性。参见 LineTypes
hierarchy有关层次结构的可选信息。只有当您只想绘制某些轮廓(参见 maxLevel)时才需要它。
maxLevel绘制轮廓的最大级别。如果为 0,则只绘制指定的轮廓。如果为 1,则函数绘制轮廓及其所有嵌套轮廓。如果为 2,则函数绘制轮廓、所有嵌套轮廓、所有嵌套到嵌套的轮廓,依此类推。只有在有层次结构可用时才考虑此参数。
offset可选的轮廓偏移参数。将所有绘制的轮廓偏移指定的 \(\texttt{offset}=(dx,dy)\) 。
注意
当 thickness=FILLED 时,即使没有提供层次结构数据,该函数也设计为正确处理具有孔的连通分量。这是通过使用奇偶规则一起分析所有轮廓来完成的。如果您有一组单独检索的轮廓的联合集合,这可能会给出不正确的结果。为了解决这个问题,您需要分别为每个轮廓子组调用 drawContours,或者使用 contourIdx 参数迭代集合。

◆ drawMarker()

void cv::drawMarker ( 输入输出数组 img,
position,
const Scalar & 颜色,
整数 markerType = MARKER_CROSS,
整数 markerSize = 20,
整数 粗细 = 1,
整数 line_type = 8 )
Python
cv.drawMarker(img, position, color[, markerType[, markerSize[, thickness[, line_type]]]]) -> img

#include <opencv2/imgproc.hpp>

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

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

参数
img图像。
position十字准星定位的点。
颜色线条颜色。
markerType您想要使用的特定标记类型,请参见 MarkerTypes
粗细线条粗细。
线条类型线条类型,参见 LineTypes
markerSize标记轴的长度 [默认 = 20 像素]

◆ ellipse() [1/2]

void cv::ellipse ( 输入输出数组 img,
const RotatedRect & box,
const Scalar & 颜色,
整数 粗细 = 1,
整数 lineType = 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 的替代椭圆表示。这意味着该函数绘制内切于旋转矩形的椭圆。
颜色椭圆颜色。
粗细如果为正,则为椭圆弧轮廓的粗细。否则,这表示要绘制填充的椭圆扇区。
线条类型椭圆边界的类型。参见 LineTypes

◆ ellipse() [2/2]

void cv::ellipse ( 输入输出数组 img,
圆心,
尺寸 axes,
双精度浮点数 angle,
双精度浮点数 startAngle,
双精度浮点数 endAngle,
const Scalar & 颜色,
整数 粗细 = 1,
整数 线条类型 = LINE_8,
整数 位移 = 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图像。
圆心椭圆的中心。
axes椭圆主轴大小的一半。
angle椭圆旋转角度(度)。
startAngle椭圆弧的起始角度(度)。
endAngle椭圆弧的结束角度(度)。
颜色椭圆颜色。
粗细如果为正,则为椭圆弧轮廓的粗细。否则,这表示要绘制填充的椭圆扇区。
线条类型椭圆边界的类型。参见 LineTypes
位移中心坐标和轴值中的分数位数。

◆ ellipse2Poly() [1/2]

void cv::ellipse2Poly ( 圆心,
尺寸 axes,
整数 angle,
整数 arcStart,
整数 arcEnd,
整数 delta,
std::vector< Point > & pts )
Python
cv.ellipse2Poly(center, axes, angle, arcStart, arcEnd, delta) -> pts

#include <opencv2/imgproc.hpp>

用折线逼近椭圆弧。

函数ellipse2Poly计算逼近指定椭圆弧的多段线的顶点。它被ellipse函数使用。如果arcStart大于arcEnd,则交换它们。

参数
圆心弧的中心。
axes椭圆主轴大小的一半。详情请参见ellipse
angle椭圆的旋转角度(度)。详情请参见ellipse
arcStart椭圆弧的起始角度(度)。
arcEnd椭圆弧的结束角度(度)。
delta后续多段线顶点之间的角度。它定义了逼近精度。
pts多段线顶点的输出向量。

◆ ellipse2Poly() [2/2]

void cv::ellipse2Poly ( Point2d 圆心,
Size2d axes,
整数 angle,
整数 arcStart,
整数 arcEnd,
整数 delta,
std::vector< Point2d > & pts )
Python
cv.ellipse2Poly(center, axes, angle, arcStart, arcEnd, delta) -> pts

#include <opencv2/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

参数
圆心弧的中心。
axes椭圆主轴大小的一半。详情请参见ellipse
angle椭圆的旋转角度(度)。详情请参见ellipse
arcStart椭圆弧的起始角度(度)。
arcEnd椭圆弧的结束角度(度)。
delta后续多段线顶点之间的角度。它定义了逼近精度。
pts多段线顶点的输出向量。

◆ fillConvexPoly() [1/2]

void cv::fillConvexPoly ( 输入输出数组 img,
const Point * pts,
整数 npts,
const Scalar & 颜色,
整数 线条类型 = LINE_8,
整数 位移 = 0 )
Python
cv.fillConvexPoly(img, points, color[, lineType[, shift]]) -> img

#include <opencv2/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

◆ fillConvexPoly() [2/2]

void cv::fillConvexPoly ( 输入输出数组 img,
输入数组 points,
const Scalar & 颜色,
整数 线条类型 = LINE_8,
整数 位移 = 0 )
Python
cv.fillConvexPoly(img, points, color[, lineType[, shift]]) -> img

#include <opencv2/imgproc.hpp>

填充凸多边形。

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

参数
img图像。
points多边形顶点。
颜色多边形颜色。
线条类型多边形边界的类型。参见LineTypes
位移顶点坐标中的分数位数。

◆ fillPoly() [1/2]

void cv::fillPoly ( 输入输出数组 img,
const Point ** pts,
const int * npts,
整数 ncontours,
const Scalar & 颜色,
整数 线条类型 = LINE_8,
整数 位移 = 0,
偏移量 = Point() )
Python
cv.fillPoly(img, pts, color[, lineType[, shift[, offset]]]) -> img

#include <opencv2/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

◆ fillPoly() [2/2]

void cv::fillPoly ( 输入输出数组 img,
输入数组数组 pts,
const Scalar & 颜色,
整数 线条类型 = LINE_8,
整数 位移 = 0,
偏移量 = Point() )
Python
cv.fillPoly(img, pts, color[, lineType[, shift[, offset]]]) -> img

#include <opencv2/imgproc.hpp>

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

函数cv::fillPoly填充由多个多边形轮廓包围的区域。该函数可以填充复杂的区域,例如,带有孔的区域、具有自相交的轮廓(它们的一些部分)等等。

参数
img图像。
pts多边形数组,每个多边形都表示为一系列点。
颜色多边形颜色。
线条类型多边形边界的类型。参见LineTypes
位移顶点坐标中的分数位数。
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计算fontScale的像素高度
粗细用于渲染文本的线条粗细。详情请参见putText。
返回值
要用于cv::putText的fontSize
参见
cv::putText

◆ getTextSize()

Size cv::getTextSize ( const String & text,
整数 fontFace,
双精度浮点数 fontScale,
整数 粗细,
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);
静态 Scalar_< double > all(double 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
[输出]baseLine相对于最底部文本点的基线的 y 坐标。
返回值
包含指定文本的框的大小。
参见
putText

◆ line()

void cv::line ( 输入输出数组 img,
pt1,
pt2,
const Scalar & 颜色,
整数 粗细 = 1,
整数 线条类型 = LINE_8,
整数 位移 = 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线段的第二个点。
颜色线条颜色。
粗细线条粗细。
线条类型线条类型。请参见 LineTypes
位移点坐标中的分数位数。

◆ polylines() [1/2]

void cv::polylines ( 输入输出数组 img,
const Point *const * pts,
const int * npts,
整数 ncontours,
bool isClosed,
const Scalar & 颜色,
整数 粗细 = 1,
整数 线条类型 = LINE_8,
整数 位移 = 0 )
Python
cv.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

◆ polylines() [2/2]

void cv::polylines ( 输入输出数组 img,
输入数组数组 pts,
bool isClosed,
const Scalar & 颜色,
整数 粗细 = 1,
整数 线条类型 = LINE_8,
整数 位移 = 0 )
Python
cv.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

绘制多条多边形曲线。

参数
img图像。
pts多边形曲线数组。
isClosed标志,指示绘制的多边形曲线是闭合的还是未闭合的。如果它们是闭合的,则函数会从每条曲线的最后一个顶点绘制一条线到其第一个顶点。
颜色多边形颜色。
粗细多边形边的粗细。
线条类型线段类型。请参见 LineTypes
位移顶点坐标中的分数位数。

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

◆ putText()

void cv::putText ( 输入输出数组 img,
const String & text,
org,
整数 fontFace,
双精度浮点数 fontScale,
Scalar 颜色,
整数 粗细 = 1,
整数 线条类型 = 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字体缩放因子,乘以字体特定的基本大小。
颜色文本颜色。
粗细用于绘制文本的线条粗细。
线条类型线条类型。请参见 LineTypes
bottomLeftOrigin如果为真,则图像数据原点位于左下角。否则,它位于左上角。
示例
samples/cpp/fitellipse.cpp.

◆ rectangle() [1/2]

void cv::rectangle ( 输入输出数组 img,
pt1,
pt2,
const Scalar & 颜色,
整数 粗细 = 1,
整数 线条类型 = LINE_8,
整数 位移 = 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矩形的顶点。
pt2与 pt1 相对的矩形的顶点。
颜色矩形颜色或亮度(灰度图像)。
粗细构成矩形的线条粗细。负值,如 FILLED,表示函数必须绘制一个填充矩形。
线条类型线条类型。参见 LineTypes
位移点坐标中的分数位数。

◆ rectangle() [2/2]

void cv::rectangle ( 输入输出数组 img,
矩形 rec,
const Scalar & 颜色,
整数 粗细 = 1,
整数 线条类型 = LINE_8,
整数 位移 = 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() and r.br()-Point(1,1)` 是相对角