//Exercises at end of Chapter 5,《learning OpenCV3》
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
void help(const char **argv) {
cout << "\n\n"
<< "This program solves the Exercises at the end of Chapter 5 \n"
<< "Call:\n"
<< argv[0] << " <path/image_name>\n\n"
<< "For example: " << argv[0] << " / test.jpg\n"
<< endl;
}
int main( int argc, const char** argv )
{
help(argv);
if(argc < 2) {
cout << "\nERROR: You had too few parameters.\n" << endl;
return -1;
}
/************************************************************************/
/*5.1. Drawing practice: load or create and display a color image. Draw one example of
every shape and line that OpenCV can draw. */
/************************************************************************/
Mat src = imread("e:/template/lena.jpg");
cv::circle(src,Point(100,100),100,Scalar(255,255,255),2); //circle
cv::rectangle(src,Point(0,0),Point(300,300),Scalar(255,255,255),2);//rectangle
cv::line(src,Point(0,0),Point(300,300),Scalar(255,255,255),2);//line
cv::ellipse(src,cv::Point(100,100),Size(100,100),45,0,180,Scalar(255,0,0),2);//ellipse
/************************************************************************/
/*5.2. Grayscale: load and display a color image.
a. Turn it into three-channel grayscale (it is still an BGR image, but it looks gray
to the user).
b. Draw color text onto the image.*/
/************************************************************************/
//a
Mat tmp;
cvtColor(src,tmp,COLOR_BGR2GRAY);
cvtColor(tmp,src,COLOR_GRAY2BGR);
//b
putText(src,"puttext",Point(50,30),CV_FONT_HERSHEY_DUPLEX,1.0f,Scalar(0,255,0));
/************************************************************************/
/*5.5. Use cv::LineIterator to count pixels on different line segments in, say, a 300 × 300 image.
a. At what angles do you get the same number of pixels for 4-connected and
8-connected lines?
b. For line segment angles other than the above, which counts more pixels:
4-connected or 8-connected lines?
c. For a given line segment, explain the difference in the length of the line compared
to the number of pixels you count iterating along the line for
both 4-connected and 8-connected? Which connectedness is closer to the true
line length?
/************************************************************************/
//a、
LineIterator it_4_x(src, Point(0,0), Point(0,100), 4);
LineIterator it_8_x(src, Point(0,0), Point(0,100), 4);
LineIterator it_4_y(src, Point(0,0), Point(100,0), 4);
LineIterator it_8_y(src, Point(0,0), Point(100,0), 4);
cout << "it_4_x " <<it_4_x.count<<" it_8_x "<<it_8_x.count<<endl;
cout << "it_4_y " <<it_4_y.count<<" it_8_y "<<it_8_y.count<<endl;
//b the answer is: 4-connected counts more pixels than 8-connected counts
LineIterator it_4(src, Point(0,0), Point(100,100), 4);
LineIterator it_8(src, Point(0,0), Point(100,100), 8);
cout << "it_4 " <<it_4.count<<" large than it_8 "<<it_8.count<<endl;
//c
// the difference is the same as the difference between 4-connected and 8-connected
// I veleve the 8-connected is closer to the true line length.
waitKey();
return 0;
}
- 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试
20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...
- 视觉slam十四讲第七章课后习题6
版权声明:本文为博主原创文章,转载请注明出处: http://www.cnblogs.com/newneul/p/8545450.html 6.在PnP优化中,将第一个相机的观测也考虑进来,程序应如何 ...
- 视觉slam十四讲第七章课后习题7
版权声明:本文为博主原创文章,转载请注明出处:http://www.cnblogs.com/newneul/p/8544369.html 7.题目要求:在ICP程序中,将空间点也作为优化变量考虑进来 ...
- 关于《Java读书笔记》第六章课后习题选择题总结与疑问
课后习题 选择题 3 题 代码: class Some{ String ToString(){ return "Some instance"; } } public class M ...
- C语言程序设计·谭浩强(第四版)第二章课后习题的答案,算法——程序的灵魂
C语言程序小练习 1.用C语言设计程序算出1-1/2+1/3-14+1/5...+1/99-1/100的值 #include<stdio.h> int main() { ; double ...
- 视觉slam十四讲第8章课后习题3+稀疏直接法程序注释
版权声明:本文为博主原创文章,转载请注明出处: http://www.cnblogs.com/newneul/p/8571653.html 3.题目回顾:在稀疏直接法中,假设单个像素周围小块的光度也不 ...
- 《学习OpenCV3》第14章课后习题
1.在一条含有 N 个点的封闭轮廓中,我们可以通过比较每个点与其它点的距离,找出最外层的点.(这个翻译有问题,而且这个问题是实际问题) a.这样一个算法的复杂度是多少? b.怎样用更快的速度完成这个任 ...
- Perl 中级教程 第5章课后习题
5. 9. 1. 练习1 [5 分钟] 先不要运行程序, 看看你能否判断出这程序的哪部份出了问题?如果你看不出 来, 就可以运行一相程序, 得到些暗示, 来看是否能修改好: my %passenger ...
- 中级Perl 第三章课后习题
3. 10. 1. 练习1 [25 分钟] 读当前目录的文件列表并转换成全路径.不能用shell 命令或外部程序读当前目 录.Perl 的File::Spec 和Cwd 两个模块对这个程序有帮助.每个 ...
随机推荐
- Entity Framework(Fluent API)
一.概述 Fluent API 可以理解为一种从POCO到数据库的映射约定,包括字段长度,类型,主外键等等,在EF Code First进行开发时候经常用到. 1.主键 modelBuilder.En ...
- python的赋值,深拷贝和浅拷贝的区别
原文地址https://www.cnblogs.com/xueli/p/4952063.html 赋值:a = [1,2,3,["a","b"]] b=a,那 ...
- vue父子组件写法,数据传递,顺便封装 element-ui的弹窗组建
父组件如下: <template> <div class="print"> <el-button @click="bbclick" ...
- cmd 修改文件或目录的执行权限
设置当前目录及子目录(/r)下所有文件(/f *)的所有者为管理员(/a) takeown /f * /a /r 我试用如下: takeown /f C:\test /a /r 设置当前目录及子目录下 ...
- Unity shader学习之逐顶点漫反射光照模型
公式如下: Cdiffuse = Clight * mdiffuse * max(0, dot(n,l)); 其中,n 为表面法线,l 为指向光源的单位向量,mdiffuse 为材质温反射颜色,Cdi ...
- Unity3d之如何截屏
Unity3d中有时有截屏的需求,那如何截屏呢,代码如下: /// <summary> /// 截屏 /// </summary> /// <param name=&qu ...
- Helter Skelter (扫描线 + 离散化 + 树状数组)
扫描线:按照其中一个区间的标记为pos,然后左区间标记d为正影响,有区间标记d为负影响,然后根据所有的pos排序.pos从小扫到大,那么对于某一个区间一定会被扫过2次,那么经过2次之后就只剩下中间那一 ...
- skynet 报错 skynet 服务缺陷 Lua死循环
我的报错如下: 看起来是skynet中lua死循环,实际上,可能只是本地配置出了问题,比如,我的数据库连接不上了,因为我把别人的配置更新到我本地了,吗,mysql秘密不对 解决办法就是将配置文件中的, ...
- modelsim仿真正确FPGA运行不正确的可能原因 - cm4写寄存器错
困住整整一周了,工作进行不下去,中午偶遇导师,指导意见是有两种可能: 1. FPGA编译器优化代码,可以考虑把综合过程中所有的warning排查一下 2. verilog里有不可综合的语句. 又及 ...
- pycharm的版本对应问题
如果版本不对应往往会出现很多问题,需要各种方法才能解决,现记录一下我工作中遇到的版本问题,以下版本一般情况下是可以直接安装使用的. 目前一直在使用的版本: