Opencv3 C ++ VS2017スタディノート06ランダムな線で図形とテキストを描画する

  • cv :: Pointクラスは、2D平面上の点x、yを表します
    • 属性xおよびy
    • 即ポイントp; py = 9; px = 1;
  • cv :: Scalarクラスは、4つの要素のベクトルを表します
    • Scalar(b、g、r);は、色を表すことができるbgrの3つのチャネルの値を表します。
  • 線を引くcv :: line()
    • line()パラメーター: 
      • LINE_4  
      • LINE_8
      • LINE_AAジグザグライン
      • line(src0、p1、p2、color、1、LINE_8、0); //パラメータ:背景画像、始点、終点、線の色、太さ線の太さ、線の種類LINE_8
  • 楕円を描くcv :: ellipse()
    • ellipse(src0、Point(src0.cols / 2、src0.rows / 2)、Size(src0.cols / 4、src0.rows / 8)、90、0、360、color、LINE_8);  
    •   パラメータ:背景画像、楕円の中心、楕円の長さと半径、横になっている楕円の方向、開始角度、色、線種
  • 長方形を描くcv :: rectangle() 
    • 長方形のオブジェクトを作成する
      • Rect rect = Rect(200、100、300、300); //パラメータ:左頂点座標x、yおよびwidth \ height 
    • rectangle(src0、rect、color、1、LINE_8); //パラメータ:背景画像、長方形オブジェクト、色、太さ、線種
  • 円を描くcv :: circle()
    • circle(src0、center、radius、color、1、LINE_8); //
    • パラメータ:背景画像、中心、半径、色、太さ、線種
  • cv :: fillPoly()を埋める
  • テキストを入力putText() 
    • putText(src0、 "hello"、Point(src0.cols / 2、src0.rows / 2)、FONT_HERSHEY_COMPLEX、2、Scalar(122、222、31)、1、LINE_8);
    • パラメータ:背景画像、テキストコンテンツ、カーソル開始点、フォントスタイル、フォントサイズ、色、太さ、線種
  • ランダムに線を引く
  • RNGタイプ、乱数生成
    • RNG rng(シード);
    • rng.uniform(double a、double b);均一関数は、生成制限を決定するために使用されます
#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>
#include <string>

using namespace std;
using namespace cv; 

void MyLines();
void MyRectangle();
void Myellipse();
void MyCircle();
void RandomDemo();
Mat src0, src1;

int main(int argc, char ** argv)
{
	src0 = imread("C:\\Users\\xujin\\Desktop\\test0.JPG");
	if (!src0.data)
	{
		cout << "no image";
		return -1;
	}
	MyLines();
	MyRectangle();
	Myellipse();
	MyCircle();
	putText(src0, "hello", Point(src0.cols / 2, src0.rows / 2), FONT_HERSHEY_COMPLEX, 2, Scalar(122, 222, 31), 1, LINE_8);
	//参数:背景图, 文本内容, 光标起点, 字形,字体大小, 颜色, thickness,线型
	namedWindow("src0_image", WINDOW_AUTOSIZE);
	imshow("src0_image", src0);
	RandomDemo();
	waitKey(0);
	return 0;
}

void MyLines()
{
	Point p1 = Point(20, 30);
	Point p2;
	Scalar color = Scalar(0, 0, 255);
	p2.x = 300;
	p2.y = 300;
	line(src0, p1, p2, color, 1, LINE_8, 0);    //参数: 背景图,开始点,结束点, 线条颜色, thickness线条厚度, 线条类型LINE_8

}
void MyRectangle()
{
	Rect rect = Rect(200, 100, 300, 300);       //参数:左顶点坐标x,y和width\height
	Scalar color = Scalar(233, 1, 22);				
	rectangle(src0, rect, color, 1, LINE_8);			//参数:背景图,矩形对象, 颜色, thickness, 线型

}

void Myellipse()
{
	Scalar color = Scalar(0, 222, 31);
	ellipse(src0, Point(src0.cols/2, src0.rows/2), Size(src0.cols/4, src0.rows/8),90, 0 ,360, color, LINE_8);  
	//参数: 背景图, 椭圆中心,椭圆的长短半径, 椭圆躺着的方向, 起始角度,颜色,线型
}

void MyCircle()
{
	Scalar color = Scalar(0, 222, 31);
	Point center = Point(src0.cols / 2, src0.rows / 2);
	int radius = 140;
	circle(src0, center, radius, color, 1, LINE_8);  //参数: 背景图, 圆心, 半径, 颜色, thickness, 线型

}

void RandomDemo()
{
	RNG rng(12345);
	Point p1;
	Point p2;
	Mat bg = Mat::zeros(src0.size(), src0.type());
	namedWindow("bg_image", WINDOW_AUTOSIZE);
	for (int i = 0; i < 100000; i++)
	{
		p1.x = rng.uniform(0, src0.cols);
		p2.x = rng.uniform(0, src0.cols);
		p1.y = rng.uniform(0, src0.rows);
		p2.y = rng.uniform(0, src0.rows);
		Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
		line(bg, p1, p2, color, 1, LINE_8);
		imshow("bg_image", bg);
		if (waitKey(50) > 0)
		{
			break;
		}
	}
	
}

 

おすすめ

転載: blog.csdn.net/Mrsherlock_/article/details/104496216