zoukankan      html  css  js  c++  java
  • 《学习OpenCV》练习题第三章第一题

     1 #include <highgui.h>
     2 #include <cv.h>
     3 #include <stdio.h>
     4 
     5 #pragma comment (lib,"opencv_calib3d231d.lib")
     6 #pragma comment (lib,"opencv_contrib231d.lib")
     7 #pragma comment (lib,"opencv_core231d.lib")
     8 #pragma comment (lib,"opencv_features2d231d.lib")
     9 #pragma comment (lib,"opencv_flann231d.lib")
    10 #pragma comment (lib,"opencv_gpu231d.lib")
    11 #pragma comment (lib,"opencv_haartraining_engined.lib")
    12 #pragma comment (lib,"opencv_highgui231d.lib")
    13 #pragma comment (lib,"opencv_imgproc231d.lib")
    14 #pragma comment (lib,"opencv_legacy231d.lib")
    15 #pragma comment (lib,"opencv_ml231d.lib")
    16 #pragma comment (lib,"opencv_objdetect231d.lib")
    17 #pragma comment (lib,"opencv_ts231d.lib")
    18 #pragma comment (lib,"opencv_video231d.lib")
    19 
    20 #define RAND_INT_MAX 256
    21 
    22 /*
    23  * 《学习OpenCV》第三章第一题
    24  * 完成时间:16:31 3/1 星期五 2013
    25  */
    26 int main()
    27 {
    28     /*------------------------------------*/
    29     // 选取一个负的浮点数
    30     float f = -3.589;
    31 
    32     // 取绝对值
    33     float abs_f = CV_IABS(f);
    34 
    35     // 四舍五入,取其极值
    36     int round_f = cvRound(abs_f);
    37 
    38     printf("absolute value: %f\n", abs_f);
    39     printf("round value: %d\n", round_f);
    40     /*------------------------------------*/
    41     CvRNG rng;
    42     rng = cvRNG(cvGetTickCount());
    43 
    44     // 产生10个随机整数和小数
    45     for(int i = 0; i < 10; i++)
    46     {
    47         printf("%d\trand integer: %d\t", i, (cvRandInt(&rng) % RAND_INT_MAX ));
    48         printf("rand floating: %.4f\n", cvRandReal(&rng));
    49     }
    50     /*------------------------------------*/
    51     // 将一个浮点型的CvPoint2D32f转换成一个整数型的CvPoint
    52     CvPoint2D32f point_2D32f = cvPoint2D32f(2.5, 3.5);
    53     CvPoint point = cvPointFrom32f(point_2D32f);
    54 
    55     printf("---------------------------------------\n");
    56     printf("CvPoint2D32f: %f\t%f\n", point_2D32f.x, point_2D32f.y);
    57     printf("Convert to CvPoint: %d\t%d\n", point.x, point.y);
    58     // 将一个整数型的CvPoint转换为浮点型的CvPoint2D32f
    59     CvPoint2D32f point_1 = cvPointTo32f(point);
    60     printf("Convert to CvPoint2D32f: %f\t%f\n", point_1.x, point_1.y);
    61 
    62     return 0;
    63 }

    运行结果:

    相关记录:

    a. cxtypes.h在OpenCV2.2.1中已经不存在了,相应的文件为“OpenCV2.2安装文件夹路径/opencv/build/include/opencv2/core/types_c.h”
    --------------
    绝对值宏定义
    /* absolute value without jumps */
    #ifndef __cplusplus
    #define  CV_IABS(a)     (((a) ^ ((a) < 0 ? -1 : 0)) - ((a) < 0 ? -1 : 0))
    #else
    #define  CV_IABS(a)     abs(a)
    #endif
    ---------------
    函数 cvRound, cvFloor, cvCeil 用一种舍入方法将输入浮点数转换成整数。 cvRound 返回和参数最接近的整数值。 cvFloor 返回不大于参数的最大整数值。cvCeil 返回不小于参数的最小整数值。在某些体系结构中该函数 工作起来比标准 C 操作起来还要快。
    ---------------
    1. 一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法迭代产生随机数序列。
    2. 随机数的“种子”就是产生随机数的第一次使用值,机制是通过一个比较复杂函数,将这个种子的值映射到随机数空间的某一个点上,并且产生的随机数均匀地(或者符合正态分布等)散步在空间中,以后产生的随机数都与前一个随机数有关。
    3. RNG : random number generation   随机数生成
    相关函数
    1. CvRNG cvRNG(int64 seed);
       使用64位长整形种子,初始化随机数生成器状态。
       cvGetTickCount();
       返回64位长整形的时间数据,在opencv中是为CvRNG设置的专用种子。
    2. unsigned cvRandInt(CvRNG* rng);
       返回均匀分布的随机32位无符号整型值,并更新RNG的状态 ; 使用模操作可以获得确定边界的整形数值。
    3. double cvRandReal(CvRNG* rng);
       返回均匀分布的随即浮点数,范围在0-1(不含1),并更新RNG的状态。

  • 相关阅读:
    文件操作3
    文件操作2
    kubernetes快速应用入门
    kubeadm初始化kubernetes集群
    kubernetes基础概念
    变量
    字面值
    关键字
    标识符
    Ubuntu安装MySql5.7
  • 原文地址:https://www.cnblogs.com/qdsclove/p/3002381.html
Copyright © 2011-2022 走看看