OpenCV基础课程笔记08绘制图形和文字

写在前面

Vec3b -> uchar
Vec3f -> float
src.convertTo(dst.CV_23F);//转换方式

比较重要的随机数API
RNG rng(12345);
rng.uniform(min,max);

代码

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;

//Mat src = imread("A:\\专用\\TestForTheCV\\女友44.jpg");
Mat src = imread("A:\\专用\\TestForTheCV\\代替女友出境2.jpg");
//imshow("图片", src);

void MyLine() {
	Point p1, p2;
	p1.x = 20; p1.y = 30;
	p2 = Point(200, 300);
	Scalar linecolor = Scalar(0, 0, 255);
	line(src, p1, p2, linecolor, 20, LINE_8);  //倒数第二个是粗度
}

void MyRectangle() {
	Rect rec = Rect(100, 500, 200, 300);
	Scalar color = Scalar(255, 0, 0);
	rectangle(src, rec, color,10,LINE_8);
}

void MyEllipse() {
	Scalar color = Scalar(0, 255, 0);
	ellipse(src, Point(src.cols / 2.3, src.rows/ 1.64), Size(src.cols / 5, src.rows / 9), 0, 0, 360, color, 10, LINE_8);
}

void MyCircle() {
	Scalar color = Scalar(0, 255, 255);
	Point center = Point(src.cols / 2, src.rows / 2);
	circle(src, center, 200, color, 15);

}

void MyPolygon() {
	Point pts[1][5];
	pts[0][0] = Point(300, 400);
	pts[0][1] = Point(300, 600);
	pts[0][2] = Point(400, 600);
	pts[0][3] = Point(400, 400);
	pts[0][4] = Point(300, 400);
	const Point* ppts[] = { pts[0] };
	int npt[] = { 5 };
	Scalar color = (255, 255, 255);
	fillPoly(src, ppts,npt,1, color, 8);
}

void RandomLineDemo(Mat bgimage) {
	RNG rng(123);
	for (int i = 0; i < 1000000; i++) {
		Point p1 = Point(rng.uniform(0, bgimage.cols), rng.uniform(0, bgimage.rows));
		Point p2 = Point(rng.uniform(0, bgimage.cols), rng.uniform(0, bgimage.rows));
		Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 2755), rng.uniform(0, 255));
		line(bgimage, p1, p2, color, 1, 8);
		imshow("random line demo", bgimage);
		if (waitKey(100) > 0) {
			break;
		}
	}
}


int main() {
	MyLine(); 
	MyRectangle();

	MyCircle();
	MyPolygon();

	MyEllipse();
	putText(src, "I Like you", Point(80, 250), CV_FONT_BLACK, 1.0, Scalar(255, 255, 255), 2, 8);

	//RandomLineDemo(src);
	imshow("人体臀部识别", src);


	waitKey(0);
	return 0;

}

结果

不想在其他小姐姐身上写I like you,先用自己的照片代替女友那……不行流鼻血了。
在这里插入图片描述
胡乱划线的函数
在这里插入图片描述

posted @ 2020-08-26 22:20  爱和九九  阅读(42)  评论(0)    收藏  举报