【练习6.10】笛卡儿坐标转极坐标cvLogPolar的使用及中心点对结果的影响

 

提纲
题目要求
程序代码
结果图片
要言妙道

 

 

 

  

 

题目要求:

 参见log-polar函数

a、将正方形转换为波浪线的图表

b、如果log-polar的中心点在正方形左上角,画log-polar的结果

c、如果log-polar的中心点在正方形右下角,画log-polar的结果

 

程序代码:

 

 1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点。

 2 //

 3 //D:\\Work\\Work_Programming\\Source\\Image\\lena.jpg

 4 

 5 

 6 #include "stdafx.h"

 7 #include <cv.h>

 8 #include <highgui.h>

 9 #include <iostream>

10 

11 #include <opencv2/legacy/legacy.hpp>

12 //#pragma comment(lib, "opencv_legacy2411.lib")

13 

14 using namespace cv;

15 using namespace std;

16 

17 //函数声明-->--->-->--->-->--->-->--->//

18 

19 

20 //<--<--<--<--<--<--<--<--<--函数声明//

21 

22 int _tmain(int argc, _TCHAR* argv[])

23 {

24     CvSize size_Image = cvSize(400, 400);

25     IplImage * image_Resource = cvCreateImage(size_Image, IPL_DEPTH_8U, 1);

26     cvZero(image_Resource);

27 

28     IplImage *image_square = cvCloneImage(image_Resource);

29 

30     CvPoint point_start = cvPoint(2, 2);

31     CvPoint point_end = cvPoint(397, 397);

32     //CvPoint2D32f point_center = cvPoint2D32f((double)(((point_end.x - point_start.x) / 2) + point_start.x), (double)(((point_end.y - point_start.y) / 2) + point_start.y));

33     CvPoint2D32f point_center = cvPoint2D32f(image_Resource->width / 2, image_Resource->height / 2);

34 

35     cvRectangle(image_square, point_start, point_end, cvScalar(255), 3);

36 

37     cvNamedWindow("正方形", CV_WINDOW_AUTOSIZE);

38     cvShowImage("正方形", image_square);

39 

40 

41     //--------a:-------/:

42 

43     IplImage * image_polar = cvCloneImage(image_Resource);

44     cvLogPolar(image_square, image_polar, point_center,20);

45 

46     cvNamedWindow("波浪线", CV_WINDOW_AUTOSIZE);

47     cvShowImage("波浪线", image_polar);

48 

49     //--------a:-------/。

50 

51     //--------b:-------/:

52 

53     cvZero(image_polar);

54     point_center = cvPoint2D32f(point_start.x, point_start.y);

55 

56     cvLogPolar(image_square, image_polar, point_center, 20);

57     cvNamedWindow("波浪线_b", CV_WINDOW_AUTOSIZE);

58     cvShowImage("波浪线_b", image_polar);

59 

60     //--------b:-------/。

61 

62     //--------c:-------/:

63 

64     cvZero(image_polar);

65     point_center = cvPoint2D32f(point_end.x, point_end.y);

66 

67     cvLogPolar(image_square, image_polar, point_center, 20);

68     cvNamedWindow("波浪线_c", CV_WINDOW_AUTOSIZE);

69     cvShowImage("波浪线_c", image_polar);

70 

71     //--------c:-------/。

72 

73     cvWaitKey();

74 

75     cvReleaseImage(&image_Resource);

76     cvReleaseImage(&image_square);

77     cvReleaseImage(&image_polar);

78     cvDestroyAllWindows();

79 

80     return 0;

81 }

 

 

结果图片:

【练习6.10】笛卡儿坐标转极坐标cvLogPolar的使用及中心点对结果的影响 【练习6.10】笛卡儿坐标转极坐标cvLogPolar的使用及中心点对结果的影响
【练习6.10】笛卡儿坐标转极坐标cvLogPolar的使用及中心点对结果的影响 【练习6.10】笛卡儿坐标转极坐标cvLogPolar的使用及中心点对结果的影响

 

要言妙道:

 ①注意,参数m的值如果是1,观察不到结果,所以要放大

 ②使用cvRectangle所画的矩形,当thickness等于1的时候,矩形边线占用的像素是自己的,当thickness大于1的时候,占用矩形外部的像素

 

你可能感兴趣的:(log)