初步了解一下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;
}