openCV实例:Canny边缘检测
http://blog.sina.com.cn/s/blog_737adf530100z0jk.html
在第一次使用openCV程序成功对图像进行打开后,现在开始试验第二个例程试验:Canny边缘检测
这里算法原理和具体编程语句都先不管,因为作为一名新手(反正我是这么感觉的),拿些现成的程序跑出效果才是让人很有feel的。
先贴下原代码:
#include "cv.hpp"
#include "cxcore.hpp"
#include "opencv2\highgui\highgui.hpp"
using namespace cv;
using namespace std;
int edgeThresh = 1;
// 声明 原始图片,灰度图片,和 canny边缘图片
Mat image, cedge;
Mat gray, edge;
void onTrackbar(int, void*)
{
//blur 灰度图片
blur(gray, edge, Size(3,3));
// Canny 边缘检测
Canny(gray,edge, edgeThresh, edgeThresh*3, 3);
//全部设为0
cedge = Scalar::all(0);
//拷贝边缘的象素点
image.copyTo(cedge, edge);
imshow("Edge map", edge);
}
int main(int argc, char** argv)
{
// 载入图片
image = imread(argv[1], 1);
// 判断载入图片是否成功
if(image.empty())
{
printf("miss the image file: %d \n", argv[1]);
return -1;
}
// 生成灰度图片,因为只有灰度图片才能生成边缘图片
cedge.create(image.size(), image.type());
cvtColor(image,gray, CV_BGR2GRAY);
//新建一个窗口
namedWindow("Edge map", 1);
// 生成一个进度条来控制边缘检测
createTrackbar("Canny Threshold", "Edge map", &edgeThresh, 100, onTrackbar);
//初始化图像
onTrackbar(0,0);
waitKey(0);
return 0;
}}
这个是openCV中文论坛上的源代码C++版本,木有一点改动。但是出现以下错误:
错误1.
1>d:\program files\microsoft visual studio 10.0\my project\opencv\test\test2\test2.cpp(72): fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
1>
1>生成失败。
这个错误很好解决的了,因为使用预编译,却没有找到标准头文件:stdAfx.h,虽然我们真的不需要用它,但是为了方便加上该语句就好了。
错误2.
参见http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=15046&p=59244&hilit=tbb_debug.dll#p59244,按照论坛中所给的网址,下载一个tbb包,将tbb_debug.dll解压到D:\Program Files\opencv\build\common\tbb\ia32\vc10(这是我的安装目录)即可。
错误3.
哈哈,代码结尾多了个},删掉就好啦。
错误4.
编译都顺利通过了,现在一Debugging就发现
很简单,例程估计用cmd来运行main(),参数在命令行中都敲进去了。直接运行debug电脑发现缺少必要参数肯定不干。仔细看下 int argc, char** argv ,第一个参数发现没用着,可以直接删掉。后面是个指向char指针的指针,程序中是用来打开文件用的,这好办,自己给他在程序中指一个呗:
const char* imagename = "lena.jpg";
// 载入图片
image = imread(imagename, 1);
// 判断载入图片是否成功
if(image.empty())
{
printf("miss the image file: %d \n");
return -1;
}
printf后面的argv[1],没什么实际作用,删除。这下程序就跑通了呗,实际效果如下:
OK!!!!
其实这些错误只要我们认真读懂错误提示,兵来将挡,水来土掩,再加上网络的资源就能够很容易解决
期待明天有新进展!!
openCV实例:Canny边缘检测的更多相关文章
- OpenCV图像Canny边缘检测
Canny边缘检测 图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘函数原型: void cvCanny( ...
- OpenCV: Canny边缘检测算法原理及其VC实现详解(转载)
原文地址:http://blog.csdn.net/likezhaobin/article/details/6892176 原文地址:http://blog.csdn.net/likezhaobin/ ...
- openCV(四)---Canny边缘检测
图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘. 直接上代码,函数简介都在代码注释中 //canny边缘检测 -(void) ...
- 基于opencv下对视频的灰度变换,高斯滤波,canny边缘检测处理,同窗体显示并保存
如题:使用opencv打开摄像头或视频文件,实时显示原始视频,将视频每一帧依次做灰度转换.高斯滤波.canny边缘检测处理(原始视频和这3个中间步骤处理结果分别在一个窗口显示),最后将边缘检测结果保存 ...
- Python+OpenCV图像处理(十三)—— Canny边缘检测
简介: 1.Canny边缘检测算子是John F. Canny于 1986 年开发出来的一个多级边缘检测算法. 2.Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是: 好的检测- ...
- OpenCV——边缘检测入门、Canny边缘检测
边缘检测的一般步骤: 最优边缘检测的三个评价标准: 低错误率:表示出尽可能多的实际边缘,同时尽可能地减少噪声产生的误报: 高定位性:标识出的边缘要与图像实际边缘尽可能接近: 最小响应:图像中的边缘只能 ...
- OpenCV学习代码记录——canny边缘检测
很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...
- OpenCV学习笔记(11)——Canny边缘检测
了解Canny边缘检测的概念 1.原理 Canny边缘检测是一种非常流行的边缘检测算法,是 John F.Canny在1986年提出的.它是一个有很多步构成的算法 1)噪声去除 使用5*5的高斯滤波器 ...
- Canny边缘检测算法(基于OpenCV的Java实现)
目录 Canny边缘检测算法(基于OpenCV的Java实现) 绪论 Canny边缘检测算法的发展历史 Canny边缘检测算法的处理流程 用高斯滤波器平滑图像 彩色RGB图像转换为灰度图像 一维,二维 ...
随机推荐
- ZT-----用javascrip写一个区块链
几乎每个人都听说过像比特币和以太币这样的加密货币,但是只有极少数人懂得隐藏在它们背后的技术.在这篇博客中,我将会用JavaScript来创建一个简单的区块链来演示它们的内部究竟是如何工作的.我将会称之 ...
- ES6 之 解构赋值
本博文配合 阮一峰 <ES6 标准入门(第3版)>一书进行简要概述 ES6 中变量的解构赋值. 数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这 ...
- java引用Arcface,实现人脸识别(demo)
## 开发环境准备: ###开发使用到的软件和工具: * Jdk8.mysql5.7.libarcsoft_face.dll(so).libarcsoft_face_engine.dll(so).li ...
- 十大经典排序算法总结 (Python)
作业部落:https://www.zybuluo.com/listenviolet/note/1399285 以上链接是自己在作业部落编辑的排序算法总结- Github: https://github ...
- We are writing to let you know we have removed your selling privileges
Hello, We are writing to let you know we have removed your selling privileges, canceled your listin ...
- Python 数据图表工具的比较
Python 的科学栈相当成熟,各种应用场景都有相关的模块,包括机器学习和数据分析.数据可视化是发现数据和展示结果的重要一环,只不过过去以来,相对于 R 这样的工具,发展还是落后一些. 幸运的是,过去 ...
- python实现中文验证码识别方法(亲测通过)
验证码截图如下: # coding:utf-8from PIL import Image,ImageEnhanceimport pytesseract#上面都是导包,只需要下面这一行就能实现图片文字识 ...
- tensorboard入门
Tensorboard tensorboard用以图形化展示我们的代码结构和图形化训练误差等,辅助优化程序 tensorboard实际上是tensorflow机器学习框架下的一个工具,需要先安装ten ...
- 陈爽 软件工程导论week2.1
软件工程导论week2.1 第一章概论问题:1.程序=算法+数据结构 软件=程序+软件工程软件工程的目标是创造足够好的软件,可以从用户满意度,可靠性,软件流程的质量,可维护性等方面判断,但是我们没有 ...
- WordPress使用淘宝IP地址库的API显示评论者的位置信息(二)
1 淘宝IP地址库的接口说明 在上一篇文章<WordPress使用淘宝IP地址库的API显示评论者的位置信息(一)>中,vfhky使用了新浪工具提供的这个IP接口显示博客评论者的位置信息. ...