欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Learning OpenCV 3 章节习题——第6章

程序员文章站 2022-03-27 16:04:09
目录1.绘图练习2.灰度练习3.动态文字练习4.编写绘图程序5.计算直线的像素数5.1 什么情况下4连通和8连通能得到相同的像素数?5.2 哪一种连通方式有更多的像素数?5.3 在4连通和8连通的两种情况下,对于一条给定的直线段,直线长度和使用迭代器计算出的像素数之间的区别是什么?哪一种连接更接近真实的直线长度?1 绘图练习//1.绘图练习//1.1 ......

目录

1.绘图练习

2.灰度练习

3.动态文字练习

4.编写绘图程序

5.计算直线的像素数

5.1 什么情况下4连通和8连通能得到相同的像素数?

5.2 哪一种连通方式有更多的像素数?

5.3 在4连通和8连通的两种情况下,对于一条给定的直线段,直线长度和使用迭代器计算出的像素数之间的区别是什么?哪一种连接更接近真实的直线长度?


1 绘图练习

//1.绘图练习
	//1.1 绘制圆
	Mat drawMat1(300,300,CV_8UC3,Scalar(0));
	circle(drawMat1, Point(150, 150), 50, Scalar(255, 0, 255),
		2, //宽度为2个像素长度
		8, //轮廓连通方法 4连通或者8连通
		0 //圆心移位shift  tarVal=priVal/pow(2,shift) =75
		);
	circle(drawMat1, Point(150, 150), 50, Scalar(0, 0, 255),
		2, //宽度为2个像素长度
		8, //轮廓连通方法 4连通或者8连通
		1 //圆心移位shift  tarVal=priVal/pow(2,shift) =75
 		);

Learning OpenCV 3 章节习题——第6章

//1.2 判断直线与矩形的关系:只有当直线完全位于矩形之外才会返回 false
Mat drawMat2(300, 300, CV_8UC3, Scalar(0));
Rect rect(100,100,100,100);
rectangle(drawMat2,rect,Scalar(0,0,255),2,8);
if (clipLine(rect, Point(50, 50), Point(150, 150))) 
line(drawMat2, Point(50, 50), Point(150, 150), Scalar(255, 0, 255), 2, 8);

Learning OpenCV 3 章节习题——第6章

//1.3 绘制椭圆
	Mat drawMat3(300, 300, CV_8UC3, Scalar(0));
	RotatedRect rect1(Point(50, 50), Point(50, 200), Point(150, 200));
	ellipse(drawMat3,rect1,Scalar(255,0,255),2,8);
	ellipse(drawMat3,
		Point(200, 200),//中心点
		Size(50, 25),//长半轴50 短半轴25
		0,//长半轴夹角
		0,//起始角度
		360,//终止角度
		Scalar(0,0,255),
		2,
		8
		);

Learning OpenCV 3 章节习题——第6章

//1.4 基于角度对椭圆进行采样
	Mat drawMat4(300, 300, CV_8UC3, Scalar(0));
	vector<Point> result;
	//每隔 10°采样一次
	ellipse2Poly(Point(150,150),Size(70,50),0,0,360,10,result);
	for (Point m : result) circle(drawMat4,m,1,Scalar(0,0,255),-1);

Learning OpenCV 3 章节习题——第6章

//1.5 直线迭代器
	Mat drawMat5(300, 300, CV_8UC1, Scalar(0));
	LineIterator line(drawMat5,Point(100,100),Point(200,200),8,false);
	for (int i = 0; i < line.count; i++, line++)
		drawMat5.at<uchar>(line.pos().y, line.pos().x) = line.pos().y;

Learning OpenCV 3 章节习题——第6章

	//1.6 绘制文字
	Mat drawMat6(300, 300, CV_8UC1, Scalar(0));
	String text = "Hellow World !";
	// 左上角坐标(50,150) 手写体
	putText(drawMat6,text,Point(50,150),
		       FONT_HERSHEY_SCRIPT_COMPLEX,1,Scalar(255),2,8);
	int y_base;
	int* p = &y_base;
	Size size=getTextSize(text, FONT_HERSHEY_SCRIPT_COMPLEX, 1, 2, p);

Learning OpenCV 3 章节习题——第6章

 

 

 

 

 

 

 

 

本文地址:https://blog.csdn.net/qiao_lili/article/details/85935181

相关标签: OpenCV