3.4 图像上绘制几何图形(圆、直线、椭圆、多边形)

3.4图像上绘制几何图形

基础

point

它表示由其图像坐标和指定的2D点。我们可以将其定义为:x,y

Point(x , y);

Scalar

  • 代表一个4元素的向量。Scalar类型广泛用于OpenCV中,用于传递像素值。
  • 用它来表示BGR颜色值(3个参数)。如果不使用最后一个参数,则无需定义最后一个参数。
  • 让我们看一个例子,如果我们被要求一个颜色参数,我们给出:
Scalar( a, b, c )

我们将定义一个BGR颜色,如:Blue = aGreen = bRed = c

3.4.1 圆形 绘制

用法讲解:

circle(所需绘制的的图像的名字 , Point(圆形坐标), 半径, 圆形的颜色(Scalar&color),宽度(负数为实心圆),边界类型,数据精确度   );
 circle(img, Point(50, 50), 25, Scalar(255, 255, 255), -1);  //绘制一个实心圆

绘制实心圆 具体代码:

  #include <opencv2opencv.hpp>
  #include <iostream>

  using namespace std;
  using namespace cv;

  int main()
  {
	  Mat img = Mat::zeros(Size(512, 512), CV_8UC3);  //生成一个黑色图像用于绘制几何图形

  /********************  2023-0110   绘制一个实心圆  ******************/
	  //绘制实心圆
	  circle(img, Point(50, 50), 25, Scalar(255, 255, 255), -1);  //绘制一个实心圆
  /*************************************************************************/
      
	  imshow(" ", img);
	  waitKey(0);
	  return 0;
  }

57f6e7cd71aeee0b4499d2f62580b25

绘制空心圆 具体代码:

  #include <opencv2opencv.hpp>
  #include <iostream>

  using namespace std;
  using namespace cv;

  int main()
  {
	  Mat img = Mat::zeros(Size(512, 512), CV_8UC3);  //生成一个黑色图像用于绘制几何图形

  /******************** 2023-0110   绘制一个实心圆  **********************/
	  //绘制圆形
	  circle(img, Point(100, 50), 25, Scalar(255, 255, 255), 4);  //绘制一个空心圆   (此圆的宽度为4)
  /****************************************************************************/
      
	  imshow(" ", img);
	  waitKey(0);
	  return 0;
  }

b8c1b837f78698b36e7565b9dfba5b6

3.4.2 直线 绘制

用法讲解

line(所需绘制的的图像的名字 , Point(起点坐标),Point(终点坐标), 圆形的三通道颜色Scalar, 宽度(负数为实心圆),边界类型,数据精确度   );
ine(img, Point(100, 100), Point(200, 100), Scalar(255, 255, 255), LINE_4, 0);  //绘制一条线

绘制直线 具体代码:

#include <opencv2opencv.hpp>
#include <iostream>

  using namespace std;
  using namespace cv;

  int main()
  {
	  Mat img = Mat::zeros(Size(512, 512), CV_8UC3);  //生成一个黑色图像用于绘制几何图形
	  
  /****************  2023-0110   3.4 图像绘制几何图形 (直线)  ************/
	  //绘制直线
	  line(img, Point(100, 100), Point(200, 100), Scalar(255, 255, 255), LINE_4, 0);  //绘制一条线
  /********************************************************************************/
      
	  imshow(" ", img);
	  waitKey(0);
	  return 0;
 }

9cbf8a02a3425e719b76245fa14253c

3.4.3 椭圆 绘制

用法讲解:

ellipse(图像的名字 , Point(椭圆中心坐标),Size(a, b), 旋转角度, 起始角度, 终止角度,   圆形的三通道颜色Scalar, 宽度(负数为实心圆),边界类型,数据精确度   );
ellipse(img, Point(300, 255), Size(100, 70), 0, 0 ,360, Scalar(255, 255, 255), -1);  //绘制一个椭圆

15eced343eed43d28fed932c5b9664dd

绘制椭圆:

 #include <opencv2opencv.hpp>
 #include <iostream>

 using namespace std;
 using namespace cv;

 int main()
 {
	 Mat img = Mat::zeros(Size(512, 512), CV_8UC3);  //生成一个黑色图像用于绘制几何图形
  /**********************  2023-0110   3.4 图像绘制几何图形 (椭圆)  ********************/
	 //绘制椭圆
	ellipse(img, Point(300, 255), Size(100, 70), 0, 0 ,360, Scalar(255, 255, 255), -1);  //绘制一个椭圆
// ellipse(图像的名字 , Point(椭圆中心坐标),Size(a, b), 旋转角度, 起始角度, 终止角度,   圆形的三通道颜色Scalar, 宽度(负数为实心圆),边界类型,数据精确度   );
 /*************************************************************************************************/

	 imshow(" ", img);
	 waitKey(0);
	 return 0;

 }

a35f289171957f4c0b42434f7b6f9ac

3.4.4 多边形 绘制

(1)矩形 绘制

用法讲解:
rectangle(所需绘制的的图像的名字 , Point(顶点 1 的坐标), Point(顶点 2 的坐标),圆形的三通道颜色Scalar, 宽度(负数为实心圆),边界类型,数据精确度   );
rectangle(img, Point(50, 400), Point(100, 450), Scalar(255, 255, 255), -1);  //绘制一个椭圆
绘制椭圆 具体代码:
 #include <opencv2opencv.hpp>
 #include <iostream>

 using namespace std;
 using namespace cv;

 int main()
 {
	 Mat img = Mat::zeros(Size(512, 512), CV_8UC3);  //生成一个黑色图像用于绘制几何图形
  /*******************  2023-0110   3.4 图像绘制几何图形 (矩形)  ********************/
	 //绘制矩形
	rectangle(img, Point(50, 400), Point(100, 450), Scalar(255, 255, 255), -1);  //绘制一个椭圆
  // rectangle(所需绘制的的图像的名字 , Point(顶点 1 的坐标), Point(顶点 2 的坐标),圆形的三通道颜色Scalar, 宽度(负数为实心圆),边界类型,数据精确度   );
 /********************************************************************************************/

	 imshow(" ", img);
	 waitKey(0);
	 return 0;

 }

89771a2f4af3a55463c0c95ff3c5b97

(2)多边形绘制

用法讲解:
fillPoly(img, 顶点坐标数组(pts), 多边形顶点数组中顶点的个数(npts), 绘制多边形的个数, Scalar(125, 125, 125),所有顶点的可选偏移量);   //绘制3个多边形
 fillPoly(img, pts, npts, 3, Scalar(125, 125, 125), 8);   //绘制3个多边形
绘制多边形的具体代码:
#include <opencv2opencv.hpp>
#include <iostream>

 using namespace std;
 using namespace cv;

 int main()
 {
	 Mat img = Mat::zeros(Size(512, 512), CV_8UC3);  //生成一个黑色图像用于绘制几何图形

	 //绘制多边形
	 Point pp[2][6];         //二维数组
	 pp[0][0] = Point(72,200);
	 pp[0][1] = Point(142,204);
	 pp[0][2] = Point(226,263);
	 pp[0][3] = Point(172,310);
	 pp[0][4] = Point(117,319);
	 pp[0][5] = Point(15,260);
	 pp[1][0] = Point(359,339);
	 pp[1][1] = Point(447,351);
	 pp[1][2] = Point(504,349);
	 pp[1][3] = Point(484,433);
	 pp[1][4] = Point(418,449);
	 pp[1][5] = Point(354,402);


	 Point pp2[5];         //一维数组
	 pp2[0] = Point(350,83);
	 pp2[1] = Point(463,90);
	 pp2[2] = Point(500,171);
	 pp2[3] = Point(421,194);
	 pp2[4] = Point(338,141);

	 const Point* pts[3] = { pp[0],pp[1], pp2 };   //pts变量的生成
	 int npts[] = { 6,6,5 };      //顶点个数数组的生成
	 fillPoly(img, pts, npts, 3, Scalar(125, 125, 125), 8);   //绘制3个多边形

	 imshow(" ", img);
	 waitKey(0);
	 return 0;

 }

699e1ec1b2dc779ddab31a3b5ff8d72

3.4.5文字生成

用法讲解:

//putText(所需绘制的的图像的名字, "输出的文字内容", Point(文字左下角的像素坐标), 字符选择标志, 字符大小, Scalar(255, 255, 255),图像数据原点位置(默认为左上角);
 putText(img, "Learn OpenCV 4", Point(100, 400), 2, 1, Scalar(255, 255, 255));

绘制文字:

 #include <opencv2opencv.hpp>
 #include <iostream>

 using namespace std;
 using namespace cv;

 int main()
 {
	 Mat img = Mat::zeros(Size(512, 512), CV_8UC3);  //生成一个黑色图像用于绘制几何图形
  /********************  2023-0110   3.4 图像绘制几何图形 (文字)  *********************/
	 //文字生成
	 putText(img, "Learn OpenCV 4", Point(100, 400), 2, 1, Scalar(255, 255, 255));
  //putText(所需绘制的的图像的名字, "输出的文字内容", Point(文字左下角的像素坐标), 字符选择标志, 字符大小, Scalar(255, 255, 255),图像数据原点位置(默认为左上角);
 /************************************************************************************************/

	 imshow(" ", img);
	 waitKey(0);
	 return 0;

 }

c14234b293659c63542173f4f25f4bb

原文链接: https://www.cnblogs.com/L707/p/17040572.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    3.4 图像上绘制几何图形(圆、直线、椭圆、多边形)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/310978

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 上午11:49
下一篇 2023年2月16日 上午11:49

相关推荐