Opencv3笔记2——初步接触

初步了解一下Opencv的使用方法,具体的时候和原理在后面会由更新

图像显示

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
       // 读入一张图片
       Mat img = imread("1.jpg");

       //在窗口中显示载入的图片
       imshow("【载入的图片】", img);
       waitKey(6000);
}

这里写图片描述

这里写图片描述

图像腐蚀

#include <iostream>
#include <opencv2/highgui/highgui.hpp> // opencv highgui模块头文件
#include <opencv2/imgproc/imgproc.hpp> // opencv 图像处理头文件
using namespace std;
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;
}

这里写图片描述

这里写图片描述

均值滤波

#include <iostream>
#include <opencv2/highgui/highgui.hpp> // opencv highgui模块头文件
#include <opencv2/imgproc/imgproc.hpp> // opencv 图像处理头文件
using namespace std;
using namespace cv;
int main()
{
       // 读入一张图片
       Mat srcImage = imread("1.jpg");

       //在窗口中显示载入的图片
       imshow("【原图】均值滤波", srcImage);
       Mat dstImage;

       blur(srcImage, dstImage, Size(7, 7));
       //显示效果图
       imshow("【效果图】均值滤波", dstImage);
       waitKey(0);
       return 0;
}

这里写图片描述

这里写图片描述

Canny算子边缘检测

//---------------【头文件,命名空间包含的部分】---------
//描述:包含程序所使用的头文件和命名空间
//--------------------------------------------------
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp> // opencv 图像处理头文件
using namespace cv;
//----------------【main()函数】------------------
//描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------
int main()
{
       // 读入一张图片,目录的图片
       Mat srcImage = imread("1.jpg");

       //在窗口中显示载入的图片
       imshow("【原图】Canny边缘检测", srcImage);
       Mat dstImage,edge,grayImage; // 参数定义

       dstImage.create(srcImage.size(), srcImage.type());
       //将原始图像转化为灰度图像
       cvtColor(srcImage, grayImage, CV_BGR2GRAY);
       //先使用3×3内核来降噪
       blur(grayImage, edge, Size(3, 3));
       //运行Canny算子
       Canny(edge, edge, 3, 9, 3);
       imshow("【效果图】Canny边缘检测", edge);
       waitKey(0);
       return 0;
}

这里写图片描述

这里写图片描述

调用视频

//---------------【头文件,命名空间包含的部分】---------
//描述:包含程序所使用的头文件和命名空间
//--------------------------------------------------
#include <opencv2/opencv.hpp>
using namespace cv;
//----------------【main()函数】------------------
//描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------
int main()
{
       //读入视频
       VideoCapture capture("1.avi");
       //循环显示每一帧
       while (1)
       {
              Mat frame; // 定义一个Mat变量,用于存储每一帧的图像
              capture >> frame;
              imshow("读取视频", frame); //显示当前帧
              waitKey(3);   //延时30ms
       }
       return 0;
}

调用摄像头

//---------------【头文件,命名空间包含的部分】---------
//描述:包含程序所使用的头文件和命名空间
//--------------------------------------------------
#include <opencv2/opencv.hpp>
using namespace cv;
//----------------【main()函数】------------------
//描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------
int main()
{
       //读入视频
       VideoCapture capture(0);
       //循环显示每一帧
       while (1)
       {
              Mat frame; // 定义一个Mat变量,用于存储每一帧的图像
              capture >> frame;
              imshow("读取视频", frame); //显示当前帧
              waitKey(30);  //延时30ms
       }
       return 0;
}

使用摄像头进行Caany算子检测

//---------------【头文件,命名空间包含的部分】---------
//描述:包含程序所使用的头文件和命名空间
//--------------------------------------------------
#include <opencv2/opencv.hpp>
using namespace cv;
//----------------【main()函数】------------------
//描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------
int main()
{
       //读入视频
       VideoCapture capture(0);
       Mat edge;
       //循环显示每一帧
       while (1)
       {
              Mat frame; // 定义一个Mat变量,用于存储每一帧的图像
              capture >> frame;

              cvtColor(frame, edge, CV_BGR2GRAY);

              blur(edge, edge, Size(7, 7));

              Canny(edge, edge, 0, 30, 3);

              imshow("被canny后的视频", edge);

              waitKey(30);
       }
       return 0;
}

猜你喜欢

转载自blog.csdn.net/huayunhualuo/article/details/81265405