图像缩放变换

来源:互联网 发布:如何进行网络视频直播 编辑:程序博客网 时间:2024/05/21 08:50

作为代码界的菜鸟,最近在尝试着用vs实现《数字图像处理与机器视觉》一书中有关图像处理的VC++代码。目前先从简单的图像几何变换做起,希望能记录自己的成长^_^
本篇是图像缩放变换的实现。

#include <iostream>#include <mat.h>#include <opencv2\core\core.hpp>#include <opencv2\highgui\highgui.hpp>#include <opencv2\imgproc\imgproc.hpp>using namespace std;using namespace cv;/********************************************void scale(Mat img, Mat &dst, double times)功能: 图像的等比例缩放注: 包括放大和缩小参数: Mat img:原图像       Mat dst:转置后图像       double times: 缩放的倍数返回值: 无*********************************************/void scale(Mat img, Mat &dst, double times){    int nH = img.rows;    int nW = img.cols;    int dH = nH*times;    int dW = nW*times;    dst.create(dH, dW, img.type());    int i, j;    for (i = 0; i < dH; i++)    {        for (j = 0; j < dW; j++)        {            if (int(i/times + 0.5) < nH&&int(j/times + 0.5) < nW)                dst.at<Vec3b>(i, j) = img.at<Vec3b>(int(i / times + 0.5), int(j / times + 0.5));            else                dst.at<Vec3b>(i, j) = 0;        }    }}int main(){    Mat img = imread("1.jpg");    imshow("原图", img);    Mat dst1;    //缩放变换    //scale(img, dst1,1.3);    //imshow("缩放变换", dst1);    waitKey(0);    return 0;}

结果图如下:
原图:
原图
放大1.3倍结果:
放大1.3倍
缩小0.8倍结果:
缩小0.8倍

0 0
原创粉丝点击