opencv 入门学习
创始人
2024-01-29 08:46:23
0

opencv

演示

  • 输入说明 原图在顶层后然后再去按键,不然会失效(未知原因)
    1.roberts 边缘检测
    2.sobel算子
    3.Canny算子
    4.Laplace算子
    5.Canny算子,轮廓显示
    空格 人脸检测
  • 准备一张图片
  • 效果 默认显示原图和灰阶图
    在这里插入图片描述
  1. roberts 边缘检测
//roberts 边缘检测
Mat roberts(Mat srcImage)
{Mat dstImage = srcImage.clone();int nRows = dstImage.rows;int nCols = dstImage.cols;for (int i = 0; i < nRows - 1; i++) {for (int j = 0; j < nCols - 1; j++) {//根据公式计算int t1 = (srcImage.at(i, j) -srcImage.at(i + 1, j + 1)) *(srcImage.at(i, j) -srcImage.at(i + 1, j + 1));int t2 = (srcImage.at(i + 1, j) -srcImage.at(i, j + 1)) *(srcImage.at(i + 1, j) -srcImage.at(i, j + 1));//计算g(x,y)dstImage.at(i, j) = (uchar)sqrt(t1 + t2);}}return dstImage;
}

在这里插入图片描述
2. sobel算子

 Sobel(src_gray, grad_x, CV_16S, 1, 0, 3, 1, 1, BORDER_DEFAULT);//求x方向梯度convertScaleAbs(grad_x, abs_grad_x);//转换格式 8uSobel(src_gray, grad_y, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT);//求y方向梯度  convertScaleAbs(grad_y, abs_grad_y);//合并梯度addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);cv::imshow("solbel算子", dst);

在这里插入图片描述
3. Canny算子

  //3.Canny算子Mat canny_output;vector > contours;vector hierarchy;Canny(src_gray, canny_output, 100, 300);cv::imshow("Canny算子", canny_output);

在这里插入图片描述
4. Laplace算子

       Laplacian(src_gray, dst, -1, 3);cv::imshow("Laplace算子", dst);

在这里插入图片描述
5. Canny算子,轮廓显示

 Mat canny_output;vector > contours;vector hierarchy;Canny(src_gray, canny_output, 100, 300);// 寻找轮廓findContours(canny_output, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_TC89_KCOS);/// 绘出轮廓Mat drawing = Mat::zeros(canny_output.size(), CV_8UC3);for (int i = 0; i < contours.size(); i++){Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));drawContours(drawing, contours, i, color, 2, 8, hierarchy, 0, Point());}//在窗体中显示结果namedWindow("Contours", WINDOW_AUTOSIZE);cv::imshow("Contours", drawing);

在这里插入图片描述
空格 人脸检测 官方的模型,不太精确

//人脸检测的CascadeClassifier faceCascade;int ret = faceCascade.load("data/haarcascades/haarcascade_frontalface_alt.xml");   //加载分类器,注意文件路径//int ret = faceCascade.load("cascade.xml");   //加载分类器,注意文件路径if (!ret)//从指定的文件目录中加载级联分类器{cerr << "ERROR:Could not load classifier cascade" << endl;continue;}Mat imgGray;vector faces;if (src.channels() == 3){cvtColor(src, imgGray, COLOR_RGB2GRAY);}else{imgGray = src;}equalizeHist(imgGray, imgGray);faceCascade.detectMultiScale(imgGray, faces, 1.1, 4, 0, Size(65, 65));   //检测人脸if (faces.size() > 0){for (int i = 0; i < faces.size(); i++){//rectangle(src, Point(faces[i].x, faces[i].y), Point(faces[i].x + faces[i].width, faces[i].y + faces[i].height),//    Scalar(0, 255, 0), 1, 8);    //框出人脸位置rectangle(src, faces[i], Scalar(0, 0, 255), 2, 8, 0);}}else {cerr << "ERROR:Could not detect face" << endl;continue;}// namedWindow("FacesOfPrettyGirl", WINDOW_NORMAL);cv::imshow("FacesDetect", src);

在这里插入图片描述

相关内容

热门资讯

一人小本创业好项目 一人小本创... 一个人创业一直以来都是比较艰难的,但是也有人突破了所有的困难的成功者,虽然是小数,但也是值得大家去尝...
小本创业好项目,只要肯努力,一... 当下的人们生活中对个性化的一些物品越来越喜欢,尤其是生活中日常值得留念的照片,有啥不懂的上网看一看美...
如何找到适合自己的小本小本创业... 给别人打工,不如自己当老板!大道理谁都懂,看花容易、绣花难。很多事并不是我们想象的那么简单,但是有些...
适合小本创业者的火锅加盟项目 ... 火锅加盟万元投资的小本创业好项目2016年09月22日来源:渠道网万元创业的项目是众多中小投资者的选...
初次创业小本投资麻辣重点老火锅... 加盟重庆火锅赚钱吗?龙江码头用真实案例告诉你火锅逐渐成为现代人不可或缺的一道美食,无论男女老少都在吃...
五个适合穷人的创业项目 五个不... 如今除了公务员、事业编制的“铁饭碗”外,简直就只能创业才有出路,很多人选择了本人一个人创业,创业者假...
普通人做的小本生意 一个人就能... 普通穷人创业做什么好?如果有创业的打算,切记不要受环境的影响随波逐浪,始终要记得自己的创业梦,同时还...
15个小本创业好项目推荐 15... 为什么穷人多不敢去创业蛋糕创业蛋糕店创业30岁女人创业做什么适合女性创业的大学生适合什么创业毕业生如...
适合新手的15个小本创业好项目... 没经验也可以创业,关键你要选对项目,新手能做的创业项目有哪些呢?不仅火爆,而且低成本?一起来看看吧!...
2018年穷人专区 看完让你慌... 创业并不一定是缺钱,也有可能是不满足于现状,不过对于大多数人来说,创业确实是一个摆脱贫困的方法。当然...