02 快速上手OpenCV

来源:互联网 发布:法国制造业年度数据 编辑:程序博客网 时间:2024/06/14 14:50

一、图像显示

操作请看00节,这里只放效果图:

二、图像腐蚀

注:腐蚀,即用图像中的暗色部分“腐蚀”掉图像中高亮部分。
代码:
#include    #include //OpenCV highgui 模块头文件#include //OpenCV图像处理头文件using namespace cv;int main(int argc, char* argv[]){// 载入一张图片   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    #include //OpenCV highgui 模块头文件#include //OpenCV图像处理头文件using namespace cv;int main(int argc, char* argv[]){// 载入一张图片   Mat srcImage = imread("1.jpg");// 显示原始图    imshow("【原图】腐蚀操作均值滤波", srcImage);//进行均值滤波操作Mat dstImage;blur(srcImage, dstImage, Size(7, 7));//显示效果图imshow("【效果图】均值滤波", dstImage);// 等待任意按键按下waitKey(0);return 0;}
效果:


四、Canny边缘检测

代码:
#include    #include //OpenCV highgui 模块头文件#include //OpenCV图像处理头文件using namespace cv;int main(int argc, char* argv[]){//【0】载入原始图  Mat srcImage = imread("1.jpg");  //工程目录下应该有一张名为1.jpg的素材图imshow("【原始图】Canny边缘检测", srcImage); //显示原始图 Mat dstImage, edge, grayImage;//参数定义//【1】创建与src同类型和大小的矩阵(dst)dstImage.create(srcImage.size(), srcImage.type());//【2】将原图像转换为灰度图像cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);//【3】先用使用 3x3内核来降噪blur(grayImage, edge, Size(3, 3));//【4】运行Canny算子Canny(edge, edge, 3, 9, 3);//【5】显示效果图 imshow("【效果图】Canny边缘检测", edge);waitKey(0);return 0;}
效果:


五、读取并播放视屏

注释:
VideoCapture capture("1.avi"); 和VideoCapture capture;capture.open("1.avi");是一样的!
类似于int a;a=1;<==>int a = 1;
代码:
#include     #include using namespace cv;int main(int argc, char* argv[]){//【1】载入视频 VideoCapture capture("1.avi");//【2】循环显示每一帧while (1) {Mat frame;//定义一个Mat变量,用于存储每一帧的图像capture >> frame;//读取当前帧imshow("读取视频",frame);//显示当前帧waitKey(30);//延时30ms}return 0;}
效果:


六、调用摄像头采集图像

VideoCapture capture("1.avi");改成VideoCapture capture(0);就表示调用摄像头了;
效果:

调用摄像头配合canny边缘检测:
代码:
#include     #include using namespace cv;int main(int argc, char* argv[]){//从摄像头读入视频VideoCapture capture(0);//定义参数Mat edges;//循环显示每一帧while (1) {//【1】读入图像Mat frame;//定义一个Mat变量,用于存储每一帧的图像capture >> frame;//读取当前帧//【2】将原图像转化为灰度图像cvtColor(frame, edges, CV_BGR2GRAY);//转化BGR彩色图为灰度图//【3】使用3X3内核来降噪(2x3+1=7)blur(edges, edges, Size(7, 7));//进行模糊处理//【4】进行canny边缘检测并显示Canny(edges, edges, 0, 30, 3);imshow("被canny后的视频",edges);//显示经过处理后的当前帧if(waitKey(30) >= 0) break;//延时30ms}return 0;}

效果:


0 0