索引地址:系列教程索引地址
OpenCV提供两种缩放方法:
resize
函数原型为:
| void cv::resize(InputArray src, OutputArray dst, Size dsize, double fx = 0, double fy = 0, int interpolation = INTER_LINEAR )
|
参数为:
- 输入图片
- 输出图片
- 输出图片大小
- x方向缩放比例
- y方向缩放比例
- 插值方式
测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/opencv.hpp> using namespace cv;
int main() { Mat srcImage = imread("circles.jpg"); Mat tmpImage, dstImage1, dstImage2; tmpImage = srcImage;
imshow("src", srcImage);
resize(tmpImage, dstImage1, Size(tmpImage.cols / 2, tmpImage.rows / 2), (0, 0), (0, 0), 3); resize(tmpImage, dstImage2, Size(tmpImage.cols * 2, tmpImage.rows * 2), (0, 0), (0, 0), 3);
imshow("small", dstImage1); imshow("bigger", dstImage2);
waitKey(0); return 0; }
|
效果为

图像金字塔

上图所示为图像金字塔,中间为原始图片,如果想要得到缩小版图片,需要对原始图片进行采样,丢弃一些像素点得到新图片。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/opencv.hpp> using namespace cv;
int main() { Mat srcImage = imread("circles.jpg"); Mat tmpImage, bigImage,smallImage; tmpImage = srcImage;
imshow("src", srcImage); pyrUp(tmpImage, bigImage, Size(tmpImage.cols * 2, tmpImage.rows * 2)); pyrDown(tmpImage, smallImage, Size(tmpImage.cols / 2, tmpImage.rows / 2)); imshow("bigger", bigImage); imshow("small", smallImage);
waitKey(0);
return 0; }
|
效果为:
