OpenCV学习代码记录——canny边缘检测
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录。
代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tree/master/OpenCVTest。
效果
代码
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp> // cvtColor
// http ://blog.csdn.net/hitwengqi/article/details/6877864
static cv::Mat image, edge; // 原始图片,canny边缘保存图片
static cv::Mat gray, gedge; // 灰度图片,canny便于保存图片
int edgeThresh = 1; // 控制进度条(传出进度条控制的值)
void onTrackBar(int, void*);
int CannyEdgeDetection()
{
// 加载原始图片
image = cv::imread("../Image/sisy.jpg");
// 判断载入是否成功
if (image.empty()) {
printf("载入图片失败\n");
return -1;
}
// 生成灰度图片,因为只有灰度图片才能生成边缘图片
// gray.create(image.size(), image.type()); // 这里create是没有用的
cv::cvtColor(image, gray, CV_BGR2GRAY); // 这里会自动去create到转换的目标保存类型,这里应该是UINT8
cv::imshow("gray", gray);
// 新建一个窗口
cv::namedWindow("Edge Map", 1);
// 生成一个进度条来控制边缘检测
cv::createTrackbar("Canny Threshold", "Edge Map",
&edgeThresh/*传出进度条的值*/,100/*进度条长度*/,
onTrackBar /*进度条值改变时调用的函数*/);
// 初始化图像
onTrackBar(0, NULL);
// 等待按键
cv::waitKey();
return 0;
}
void onTrackBar(int, void*)
{
// blur 灰度图片(blur 模糊)
cv::blur(gray, gedge, cv::Size(3, 3));
// Canny 边缘检测
cv::Canny(gray /*单通道输入图像.*/,
gedge/*单通道存储边缘的输出图像*/,
edgeThresh/*第一个阈值*/,
edgeThresh * 3 /*第二个阈值*/,
3 /*Sobel算子内核大小*/);
// 全部设置为0
edge = cv::Scalar::all(0);
// 拷贝边缘像素点
image.copyTo(edge, gedge);
// 显示图片
cv::imshow("Edge Map", edge);
}
OpenCV学习代码记录——canny边缘检测的更多相关文章
- OpenCV学习代码记录——Hough线段检测
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...
- OpenCV学习笔记(11)——Canny边缘检测
了解Canny边缘检测的概念 1.原理 Canny边缘检测是一种非常流行的边缘检测算法,是 John F.Canny在1986年提出的.它是一个有很多步构成的算法 1)噪声去除 使用5*5的高斯滤波器 ...
- OpenCV学习代码记录——人脸检测
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...
- OpenCV学习代码记录—— Snake轮廓
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...
- OpenCV学习代码记录——轮廓(contour)检测
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...
- 实战深度学习OpenCV(一):canny边缘检测
利用canny边缘检测,我们可以很好地得到哦一个图像的轮廓,下面是基于C++的,这是我们通过这段代码得到的结果: #include "pch.h" #include <ios ...
- [学习OpenCV攻略][008][Canny边缘检测]
cvGetSize(输入图片) 得到输入图片的大小 cvCanny(输入图片,输出图片,lowThresh,highThresh,aperture) 把输入图片按设定光圈值进行Canny边缘检测,然后 ...
- openCV(四)---Canny边缘检测
图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘. 直接上代码,函数简介都在代码注释中 //canny边缘检测 -(void) ...
- Opencv学习笔记3:边缘检测算子的实现方法
一.边缘检测概念 图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘.效果如图: 接下来介绍一下边缘提取的几种算子,具体证明过程 ...
随机推荐
- Gflags 简明使用
简介 Google 的 gflags 是一套命令行参数处理的开源库.比 getopt 更方便,更功能强大,从 C++的库更好的支持 C++(如 C++的 string 类型).包括 C++的版本和 p ...
- 5.2 dubbo-compiler源码解析
ExtensionLoader<Protocol> loader = ExtensionLoader.getExtensionLoader(Protocol.class); final P ...
- 《Hadoop大数据架构与实践》学习笔记
学习慕课网的视频:Hadoop大数据平台架构与实践--基础篇http://www.imooc.com/learn/391 一.第一章 #,Hadoop的两大核心: #,HDFS,分布式文件系统 ...
- jquery中对 iframe的操作
我们先看一下 JQUERY中的对像 contents() 的帮助文件 contents() 概述 查找匹配元素内部所有的子节点(包括文本节点).如果元素是一个iframe,则查找文档内容 示例 描述: ...
- [asp.net]C#实现json的序列化和反序列化
在做asp.net和unity进行http通信的时候,当unity客户端发出表单请求的时候,我要将他要请求的数据以json的格式返回给客户端,让客户端来解析.服务器端这一块就涉及到json的序列化和反 ...
- jQuery实现锚点跳转(就一行代码)
/* 锚点跳转 */ function anchor(p,fn) { $("html,body").animate({ scrollTop: $("#" + p ...
- MySQL配置版下载安装、配置与使用(win7x64)
http://jingyan.baidu.com/article/597035521d5de28fc00740e6.html
- java log4j日志配置
1.首先看pom.xml文件,需要以下配置 <dependency> <groupId>log4j</groupId> <artifactId>log4 ...
- Android教你怎样一步步打造通用适配器
前言 在Android开发中ListView是最为经常使用的控件之中的一个,基本每一个应用都会涉及到它,要使用ListView列表展示,就不可避免地涉及到另外一个东西--Adapter,我们都知道,A ...
- ARM 汇编的mov操作立即数的疑问
1. 因为对arm汇编有些指令还不能理解,特别是一些相似功能指令间的区别.偶然在网上搜到"faq ARM assembly",其中描述的几个问题还是值得好好研究一下. 2. 慢慢的 ...