OpenCV官方文档学习记录(10)

金字塔形图像处理(图像缩放)

主要用到了两个函数:pyrUp和pyrDown

下面是代码:

 1 #include <opencv2\opencv.hpp>
 2 #include <iostream>
 3 #include <string>
 4
 5 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
 6
 7 int MAX_KERNEL_LENGTH = 31;
 8
 9 using namespace std;
10 using namespace cv;
11
12 void Show(const std::string &name, const Mat &img)
13 {
14     namedWindow(name, CV_WINDOW_AUTOSIZE);
15     imshow(name, img);
16 }
17
18 int main(void)
19 {
20     Mat img = imread("lena.jpg");
21     if (img.empty())
22         return -1;
23     Show("Source", img);
24     Mat tmp=img.clone();
25     Mat dst = tmp;
26
27     pyrUp(tmp, dst, Size(tmp.rows * 2, tmp.cols * 2));
28     Show("Bigger", dst);
29
30     pyrDown(tmp, dst, Size(tmp.rows / 2, tmp.cols / 2));
31     Show("Smaller", dst);
32     waitKey();
33     return 0;
34 }

注意两个函数的第三个参数都是Size类型的,此类型是对象放大后的大小,因为使用的是512*512的图像,对应于金字塔型的图像放大运算方式,放大后的图像不可以编程其他非2的整数倍的大小,因此对于rows*1.5,rows*7等等这些尺寸是会出错的。只能是原图像大小乘或除2的正整数次幂。

同时注意,这里所说的放大倍数是尺寸上长和宽都被放大,因此上述结果就是:

就是说原本512x512的图像被放大2倍后为1024x1024,缩小为1/2是256x256。

以上

时间: 2024-08-09 10:44:29

OpenCV官方文档学习记录(10)的相关文章

OpenCV官方文档学习记录(4)

基本图形的绘制,官方文档给了一个实例,绘制下面两幅图形,分别使用了圆,椭圆,矩形,多边形,线等构造. 主要是使我们了解到如何构建这些形状,以及如何使用两种数据类型Point和Scalar分别定义点和颜色: 先放图: 完整代码如下: 1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 5 #pragma comment( linker, "/subsystem:\

OpenCV官方文档学习记录(16)

Canny边缘检测 先不说函数作用,来代码: 1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 5 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 6 7 using namespace std; 8 u

OpenCV官方文档学习记录(11)

制作自己的filter, 主要使用filter2D函数: 先上代码: 1 #include "opencv2/opencv.hpp" 2 #include<iostream> 3 #include<string> 4 5 using namespace std; 6 using namespace cv; 7 8 int main(void) 9 { 10 Mat src,dst; 11 12 Mat kernel; 13 Point anthor; 14 do

OpenCV官方文档学习记录(6)

离散傅里叶变换:DFT,文档p165 代码如下: 1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 5 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 6 7 #define NUMBER 20 8 9

OpenCV官方文档学习记录(5)

随机数生成类:RNG以及文字渲染 1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 5 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 6 7 #define NUMBER 20 8 9 using na

OpenCV官方文档学习记录(15)

laplace边缘检测方式 不同于sobel的一阶导数式边缘检测,laplace算子是将图像的横纵都考虑进来的一种检测,主要使用的是二阶偏导数进行离散变换: 因为laplace也是使用分析梯度的方式进行变换,所以实际上调用的是sobel的方法.在上一篇上有体现,就是在两个方向上分别使用sobel计算结果. 代码如下: 1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 5

OpenCV官方文档学习记录(1)

图像显示并转化为黑白输出到新文件 code: 1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 5 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 6 7 using namespace std; 8 u

OpenCV官方文档学习记录(19)

重映射(remapping) 主要涉及函数 remap 因为重映射函数所做的就是通过相应的矩阵参数,将原图像对应的像素点按照参数表达式重新排列到目标矩阵,所以通过不同的算法的描写可以形成许多操作: 1.保持原样: 1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 5 #pragma comment( linker, "/subsystem:\"win

OpenCV官方文档学习记录(13)

sobel边缘检测(导数运算) 主要函数Sobel() 1 #include<opencv2/opencv.hpp> 2 #include<iostream> 3 #include<string> 4 5 using namespace std; 6 using namespace cv; 7 8 void showImg(const string &win_name,const Mat &img) 9 { 10 namedWindow(win_name