图像读取和显示
OpenCV中通过imread函数读取图片,读取的图片通过Mat类接收,通过imshow函数显示图片。
#include <iostream>
#include <opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
//读取图片
Mat Img = imread("1.jpg");
//显示图片
imshow("显示图片", Img);
//图像显示1000毫秒后关闭(当waitKey参数为0时,一直显示图片直到用户按下按键)
waitKey(1000);
return 0;
}
图像腐蚀
利用图像的暗色部分腐蚀掉图像的高亮部分
#include <iostream>
#include <opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
//读取图片
Mat srcImage = imread("2.jpg");
//显示原图
imshow("显示原图", srcImage);
//腐蚀操作
Mat element = getStructuringElement(MORPH_RECT, Size(9, 9)); //定义腐蚀结构
Mat dstImage;
erode(srcImage, dstImage, element); //腐蚀结果保存在dstImage中
//显示腐蚀效果
imshow("腐蚀效果", dstImage);
waitKey(0);
return 0;
}
图像模糊
#include <iostream>
#include <opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
//读取图片
Mat srcImage = imread("C:\\Users\\Simple\\Desktop\\3.jpg");
//显示原图
imshow("显示原图", srcImage);
//模糊操作
Mat dstImage;
blur(srcImage, dstImage, Size(7, 7)); //blur为滤波操作,滤波的效果就是模糊,模糊的结果保存在dstImage
//显示模糊效果
imshow("模糊效果", dstImage);
waitKey(0);
return 0;
}
边缘检测
#include <iostream>
#include <opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
//读取图片
Mat srcImage = imread("4.jpg");
//显示原图
imshow("显示原图", srcImage);
//边缘检测
Mat dstImage;
Canny(srcImage, dstImage, 150, 180, 3); //将检测到的边缘保存在dstImage
//显示边缘检测效果
imshow("边缘检测", dstImage);
waitKey(0);
return 0;
}
读取摄像头和视频
读取摄像头和读取视频本质上没有区别,因为视频就是摄像头录下的一帧一帧的图片。
#include <iostream>
#include <opencv.hpp>
#include <string>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
//////////////////////////////////////////////////////////////////////////
//读取视频
string video_name("1.avi");
VideoCapture capture(video_name);
//循环显示每一帧
while (1)
{
Mat frame; //用于存储每一帧
capture >> frame; //读取一帧
//若视频播放完,退出
if(frame.empty())
break;
imshow("读取视频", frame);
waitKey(30); //延时30ms
}
//////////////////////////////////////////////////////////////////////////
//读取摄像头
//VideoCapture capture;
//int camera_id = 0; //定义摄像头编号,一般从0开始编号
//capture.open(camera_id); //打开摄像头
//while (1)
//{
// Mat frame; //用于存储每一帧
// capture >> frame; //读取一帧
// imshow("读取摄像头", frame);
// waitKey(30); //延时30ms
//}
return 0;
}