[opencv笔记三]opencv图像简单变换

opencv作为计算机视觉,在读取和显示图片的基础上,我们来做一些简单的图像变换试试。
1.将一幅图片平滑处理

2.创建一副宽度和高度为输入图像一半尺寸的图像

3.边缘检测将输出一个单通道图像

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
#include "highgui.h"
void smooth(Mat  image);
void CreateImage(Mat  image);
void canny(Mat  image);
Mat  src, dst;
int main(int argc, char **argv) {
    /// 载入原图像
    src = imread("C:\\Users\\joy\\Pictures\\11.png", 1);

    //smooth(src);
    //CreateImage(src);
     canny(src);
}

/*对图像做简单的平滑处理
方法:对传进来的图片每个像素点3*3区域做高斯平滑*/
void smooth(Mat image) {
    cvNamedWindow("Example4-in");//创建两个窗口
    cvNamedWindow("Example4-out");

    imshow("Example4-in", image);//把加载的图片image在example4-in窗口中显示

    dst = src.clone();

    //平滑处理,输入,输出,高斯,3*3

    GaussianBlur(image, dst, Size(3, 3), 0, 0);
    imshow("Example4-out", dst);
    cvWaitKey(0);//等待按键
    cvDestroyWindow("Example4-in");//销毁窗口
    cvDestroyWindow("Example4-out");
}

//创建一副宽度和高度为输入图像一半尺寸的图像
void CreateImage(Mat image) {
    cvNamedWindow("Example4-in");//创建两个窗口
    cvNamedWindow("Example4-out");

    imshow("Example4-in", image);//把加载的图片image在example4-in窗口中显示

    dst.create(image.rows, image.cols , image.type());

    pyrDown(image, dst, Size(image.cols / 2, image.rows / 2));


    imshow("Example4-out", dst);
    cvWaitKey(0);//等待按键
    cvDestroyWindow("Example4-in");//销毁窗口
    cvDestroyWindow("Example4-out");
}

/*边缘检测将输出一个单通道图像*/
void canny(Mat image) {
    cvNamedWindow("Example4-in");//创建两个窗口
    cvNamedWindow("Example4-out");

    imshow("Example4-in", image);//把加载的图片image在example4-in窗口中显示
                                 //创建与src同类型和同大小的矩阵
    dst = src.clone();

    //将原始图转化为灰度图
    cvtColor(image,dst,COLOR_BGR2GRAY);
    //先使用3*3内核来降噪
    blur(dst, dst, Size(3, 3));

    //运行canny算子
    Canny(dst, dst, 3, 9, 3);
    imshow("Example4-out", dst);
    cvWaitKey(0);//等待按键
    cvDestroyWindow("Example4-in");//销毁窗口
    cvDestroyWindow("Example4-out");
}

猜你喜欢

转载自blog.csdn.net/u010763864/article/details/81193872
今日推荐