5.3-基于C++的OpenCV学习

本文介绍了使用OpenCV进行图像处理的基本操作,包括读取、显示、灰度转换、降噪及边界识别,并展示了如何处理视频,从读取到实时边界检测的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.对于图片的简单处理
读取,显示,灰度图,降噪,边界识别等

#include<opencv2\opencv.hpp>
using namespace cv;
using namespace std;
void main()
{
    Mat yuantu = imread("lena.jpg");//载入原图
    imshow("原图", yuantu);//显示原图
    //Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));//返回一个指定形状尺寸的内核矩阵
    //Mat dst;//接收返回值
    //erode(yuantu, dst, element);//erode函数
    //blur(yuantu, dst, Size(7, 7));//均值滤波处理的模糊-降噪
    Mat dst, edge, gray;
    dst.create(yuantu.size(), yuantu.type());//创建一个和原图同类型和大小的矩阵
    cvtColor(yuantu, gray, COLOR_BGR2GRAY);//灰度图
    blur(gray, edge, Size(3, 3));//降噪
    Canny(edge, edge, 3, 9);//Canny边缘检测

    imshow("处理后", edge);
    waitKey(0);
}

2.视频处理
对于视频的调取

VideoCapture capture;
    capture.open("1.avi");//读取视频
    while (1) {
        Mat frame;
        capture >> frame;//读取当前帧
        imshow("dada", frame);
        waitKey(10);
        //弄一张Mat变量来储存每一帧的图像,然后控制每隔多少毫秒输出一次
    }
    waitKey(0);
}

如果需要调用自己的摄像头,改成capture.open(0);即可。
结合上面两个可以自己调用摄像头对拍摄视频进行边界处理

    VideoCapture capture;
    capture.open(0);//读取视频
    Mat edge;
    while (1) {
        Mat frame;
        capture >> frame;//读取当前帧
        cvtColor(frame, edge, COLOR_BGR2GRAY);
        blur(edge, edge, Size(7, 7));
        Canny(edge, edge, 0, 30);
        imshow("dada", edge);
        waitKey(30);
        //弄一张Mat变量来储存每一帧的图像,然后控制每隔多少毫秒输出一次
    }
    waitKey(0);
}

3.OpenCV
imread,imshow等
滑动条(Trackbar)
Mat类:Mat M(7,7,CV_32FC2,Scalar(1,3)); 表示:创建一个2通道,且每个通道的值都为(1,3),深度为32,7行7列的图像矩阵。CV_32F表示每个元素的值的类型为32位浮点数,C2表示通道数为2,Scalar(1,3)表示对矩阵每个元素都赋值为(1,3),第一个通道中的值都是1,第二个通道中的值都是3.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值