《学习OpenCV3》第6章课后习题

简介: //Exercises at end of Chapter 5,《learning OpenCV3》#include "stdafx.h"#include #include using namespace cv;using namespace std;void help(const ...
//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 mainint argcconst 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(srcPoint(0,0), Point(0,100), 4);
    LineIterator it_8_x(srcPoint(0,0), Point(0,100), 4);
    LineIterator it_4_y(srcPoint(0,0), Point(100,0), 4);
    LineIterator it_8_y(srcPoint(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(srcPoint(0,0), Point(100,100), 4);
    LineIterator it_8(srcPoint(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;
}




目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com
目录
相关文章
|
算法 计算机视觉 C++
《学习OpenCV3》第14章课后习题
1、在一条含有 N 个点的封闭轮廓中,我们可以通过比较每个点与其它点的距离,找出最外层的点。(这个翻译有问题,而且这个问题是实际问题) a、这样一个算法的复杂度是多少? b、怎样用更快的速度完成这个任务?   1.
1435 0
|
1月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
364 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
2月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
51 4
|
2月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
3月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
3月前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
113 1
|
5月前
|
算法 计算机视觉
【Qt&OpenCV 图像的感兴趣区域ROI】
【Qt&OpenCV 图像的感兴趣区域ROI】
179 1
|
5月前
|
运维 算法 计算机视觉
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
82 1
|
5月前
|
存储 编解码 算法
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
96 0
|
4月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
下一篇
无影云桌面