- 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
- line()パラメーター:
- 楕円を描く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;
}
}
}