OpenCV基本操作

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_39504764/article/details/100132300

1. 图像显示

#include <opencv2/opencv.hpp>  //头文件
using namespace cv;  //包含cv命名空间

int main( )
{
    // 【1】读入一张图片,载入图像
    Mat srcImage = imread("1.jpg");
    // 【2】显示载入的图片
    imshow("【原始图】",srcImage);
    // 【3】等待任意按键按下
    waitKey(0);
    return 0;
}

2. 图像腐蚀

腐蚀:即用图像中的暗色部分“腐蚀”掉图像中的高亮部分。

#include <opencv2/highgui/highgui.hpp> //OpenCv highgui 模块头文件
#include <opencv2/imgproc/imgproc.hpp> //OpenCV 图像处理头文件
using namespace cv;
int main(   )
{
    //载入原图
    Mat srcImage = imread("1.jpg");
    //显示原图
    imshow("【原图】腐蚀操作", srcImage);
    //进行腐蚀操作
    Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //返回值为指定形状和尺寸的结构元素(内核矩阵)。
    Mat dstImage;
    erode(srcImage, dstImage, element); //进行图像腐蚀操作
//    显示效果图
    imshow("【效果图】腐蚀操作", dstImage);
    waitKey(0);
    
    return 0;
}

在这里插入图片描述

在这里插入图片描述

3. 图像模糊

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
int main( )
{
    //【1】载入原始图
    Mat srcImage=imread("1.jpg");
    
    //【2】显示原始图
    imshow( "均值滤波【原图】", srcImage );
    
    waitKey(0);
    
    //【3】进行均值滤波操作
    Mat dstImage;
    blur( srcImage, dstImage, Size(7, 7));
    
    //【4】显示效果图
    imshow( "均值滤波【效果图】" ,dstImage );
    
    waitKey( 0 );
}

4. 读取并播放视频

用OpenCV中的VideoCapture类,对视频进行读取显示,以及调用摄像头。

有两种读入视频的方法

  1. 先实例化再初始化:
VideoCapture capture;
capture.open("1.avi");
  1. 在实例化的同时进行初始化
VideoCapture capture("1.avi");
#include <opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main( )
{
    //【1】读入视频
    VideoCapture capture("1.avi");
    
    //【2】循环显示每一帧
    while(1)
    {
        Mat frame;//定义一个Mat变量,用于存储每一帧的图像
        capture>>frame;  //读取当前帧
        
        //若视频播放完成,退出循环
        if (frame.empty())
        {
            break;
        }
        
        imshow("读取视频",frame);  //显示当前帧
        waitKey(30);  //延时30ms
    }
    return 0;
}

5. 调用摄像头采集图像

#include <opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main( )
{
    //【1】从摄像头读入视频
    VideoCapture capture(0);
    
    //【2】循环显示每一帧
    while(1)
    {
        Mat frame;  //定义一个Mat变量,用于存储每一帧的图像
        capture>>frame;  //读取当前帧
        imshow("./读取视频",frame);  //显示当前帧
        waitKey(30);  //延时30ms
    }
    return 0;
}

可能imshow函数会出错:imshow函数出错可能解决方法

猜你喜欢

转载自blog.csdn.net/qq_39504764/article/details/100132300