请选择 进入手机版 | 继续访问电脑版

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

[复制链接]
孤单 发表于 2020-12-31 18:56:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
目次
1.画图训练
2.灰度训练
3.动态文字训练
4.编写画图程序
5.盘算直线的像素数
5.1 什么情况下4连通和8连通能得到相同的像素数?
5.2 哪一种连通方式有更多的像素数?
5.3 在4连通和8连通的两种情况下,对于一条给定的直线段,直线长度和使用迭代器盘算出的像素数之间的区别是什么?哪一种毗连更靠近真实的直线长度?
1 画图训练

  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                 );
复制代码

  1. //1.2 判断直线与矩形的关系:只有当直线完全位于矩形之外才会返回 falseMat 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);
复制代码

  1. //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                );
复制代码

  1. //1.4 基于角度对椭圆举行采样        Mat drawMat4(300, 300, CV_8UC3, Scalar(0));        vector 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);
复制代码

  1. //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(line.pos().y, line.pos().x) = line.pos().y;
复制代码

  1.         //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);
复制代码

 
 
 
 
 
 
 
 

来源:https://blog.csdn.net/qiao_lili/article/details/85935181
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )