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,先用自己的照片代替女友那……不行流鼻血了。

胡乱划线的函数


浙公网安备 33010602011771号