
为了进行绘图操作,我们必须熟悉OpenCV中图像像素位置的坐标表示方式,因为绘图过程需要知道起点、终点等参数。在OpenCV中,我们通常使用直角坐标系,其中x轴向右增长,y轴向上增长。在OpenCV的图像中,y轴却是向下增长的,这符合了人类从左到右、从上到下的阅读习惯,也将图片左上角顶点的坐标设定为(0,0)。值得注意的是,OpenCV彩色图像的像素是按照“B-G-R”模式的,这与我们常说的“R-G-B”三原色有些许不同。
在绘图操作中,有一些公共参数需要了解:
color:用于定义颜色。若是彩色,则用一个三元组表示,该三元组的元素遵循B-G-R模式;若是灰度,则用一个单独的数值表示。例如,三元组(0,255,0)表示纯绿色。
thickness:定义线条的宽度;
point:代表点位置,用二元组表示,其元素按照x-y的顺序排列。例如,(10,20)表示从左到右x=10,从上到下y=20的位置;
lineType:线条类型,在绘制曲线时,通常会使用CV2.LINE_AA以获得更好的平滑效果。
知道了两个点后,两点之间的连线就构成了直线。画直线需要提供起点和终点的x-y坐标。
我们可以使用cv2.line()函数来绘制直线。该函数的参数如下:
第1个参数是要绘图的图像实例;
第2、3个参数分别是直线的起点和终点坐标;
第4个参数是线条颜色;
第5个参数是线宽。
例如,我们可以先使用numpy创建一个512×512大小的纯白色图片对象。设定起点和终点的坐标以及颜色、线宽等参数后,即可绘制出所需的直线。
对于灰度图的处理,我们需构建单通道图像。在白色背景下,使用0值表示黑色,而在黑色背景下,大于0的值表示白色。
除了直线外,我们还可以使用cv2.circle()函数来绘制圆形。
该函数的第1个参数是图像对象;
第2个参数为圆心的坐标;
第3个参数定义了圆的半径;
第4个参数是颜色;
第5个参数(若为-1)会使圆形自动填充。
比如,我们可以在(100,100)处画一个外框的空心圆,半径为50;同时在(200,200)处画一个实心圆。
cv2.rectangle()函数可以用来绘制方形(包括长方形和正方形)。其参数如下:
第1个参数为图像对象;
第2个参数代表方形左上角的坐标;
第3个参数为方形右下角坐标;
第4个参数定义了颜色;
第5个参数(若为-1)会使方形自动填充。
以下是一些具体的方形绘制示例。
