2022-4-25:OpenCV入门(一)快速上手OpenCV图像处理

1.图像显示

// 引入OpenCV头文件
#include<opencv2/opencv.hpp>
// 使用OpenCV命名空间cv
using namespace cv;

int main()
{
    Mat image = imread("E:\\OpenCV_learn\\1.bmp");//载入图像 
    imshow("【原始图】", image);//显示图像
    waitKey(0);
    destroyAllWindows(); //如果之前没有释放掉内存的操作的话destroyallWIndows会释放掉被那个变量占用的内存
    return 0;
}

2.图像腐蚀:用图像中暗色的部分腐蚀掉高亮的部分

// 引入OpenCV头文件
#include<opencv2/highgui/highgui.hpp>//OpenCV highgui模块头文件
#include<opencv2/imgproc/imgproc.hpp>//OpenCV图像处理头文件
// 使用OpenCV命名空间cv
using namespace cv;

int main()
{
    Mat image = imread("E:\\OpenCV_learn\\1.bmp");//载入图像 
    imshow("【原始图】", image);//显示图像
    Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));//指定形状大小的内核矩阵
    Mat dstImage;
    erode(image, dstImage, element);//图像腐蚀操作
    imshow("【效果图】",dstImage);
    waitKey(0);
    destroyAllWindows();
    return 0;
}

在这里插入图片描述在这里插入图片描述

3.图像模糊:均值滤波

// 引入OpenCV头文件
#include<opencv2/highgui/highgui.hpp>//OpenCV highgui模块头文件
#include<opencv2/imgproc/imgproc.hpp>//OpenCV图像处理头文件
using namespace cv;// 使用OpenCV命名空间cv

int main()
{
    Mat srcImage = imread("E:\\OpenCV_learn\\1.bmp");//载入图像 
    imshow("【原始图】", srcImage);//显示图像
    Mat dstImage;
    blur(srcImage, dstImage, Size(7,7));//进行均值滤波
    imshow("【效果图】",dstImage);
    waitKey(0);
    destroyAllWindows();
    return 0;
}

在这里插入图片描述

4.Canny边缘检测

// 引入OpenCV头文件
#include<opencv2/opencv.hpp>//OpenCV highgui模块头文件
#include<opencv2/imgproc/imgproc.hpp>//OpenCV图像处理头文件
using namespace cv;// 使用OpenCV命名空间cv

int main()
{
    Mat srcImage = imread("E:\\OpenCV_learn\\1.bmp");//载入图像 
    imshow("【原始图】", srcImage);//显示图像
    Mat dstImage,edge,grayImage;//参数定义

    dstImage.create(srcImage.size(), srcImage.type());//创建与src同类型和大小的矩阵
    cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);//将原图转换为灰度图像
    blur(grayImage, edge, Size(3, 3));//先使用3x3内核来降噪
    Canny(edge, dstImage, 3,9,3);//使用Canny检测算子
    imshow("【效果图】",dstImage);
    waitKey(0);
    destroyAllWindows();
    return 0;
}

在这里插入图片描述

5.读取视频

// 引入OpenCV头文件
#include<opencv2/opencv.hpp>//OpenCV highgui模块头文件
using namespace cv;// 使用OpenCV命名空间cv

int main()
{
    VideoCapture capture("E:\\OpenCV_learn\\1.avi");//载入视频
    //循环显示每一帧
    while(1)
    {
        Mat frame;//定义一个Mat矩阵,用于存储每一帧图像
        capture >> frame;//读取当前帧
        //若视频播放完成,退出循环
        if (frame.empty())
        {
        break;
        }
        imshow("读取视频", frame);
        waitKey(30);//延时30ms
    }
    return 0;
}

6.调用摄像头

// 引入OpenCV头文件
#include<opencv2/opencv.hpp>//OpenCV highgui模块头文件
using namespace cv;// 使用OpenCV命名空间cv

int main()
{
    VideoCapture capture(0);//调用摄像头
    Mat edges;
    //循环显示每一帧
    while(1)
    {
        Mat frame;//定义一个Mat矩阵,用于存储每一帧图像
        capture >> frame;//读取当前帧

        cvtColor(frame, edges, COLOR_BGR2GRAY);//转化为灰度图
        blur(edges, edges, Size(7, 7));//使用3x3内核降噪(2x3+1=7)
        Canny(edges, edges, 0, 30, 3);//低于0认为不是边缘,高于30是边缘,3是Sobel算子大小
        imshow("经历Canny后的视频", edges);
        if(waitKey(30) >=0) break;//延时30ms
    }
    return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值