OpenCV-将图像转化为灰度图,然后边缘检测
来源:互联网 发布:linux编写c语言 编辑:程序博客网 时间:2024/05/18 03:27
1:代码如下:
#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "iostream"using namespace std;IplImage* doCanny(IplImage* in,double lowThresh,double highThresh,double aperture){ if(in->nChannels !=1) //只对应于单通道,即灰度图 { cout<<"不是灰度图"<<endl; return 0; } //创建首地址并分配存储空间IplImage* cvCreateImage( CvSize size, int depth, int channels ); //size 图像宽、高 //depth 图像元素的位深度,IPL_DEPTH_8U - 无符号8位整型 //channels 每个元素(像素)通道数.可以是 1, 2, 3 或 4 IplImage* out=cvCreateImage(cvGetSize(in),IPL_DEPTH_8U,1); //图像的边缘检测(采用canny算法) //函数 cvCanny 采用 Canny 算法发现输入图像的边缘而且在输出图像中标识这些边缘。 //threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。 //void cvCanny( const CvArr* image,CvArr* edges,double threshold1,double threshold2, int aperture_size=3 ) //image 输入单通道图像(可以是彩色图像)对于多通道的图像可以用cvCvtColor()修改 //edges 输出的边缘图像 ,也是单通道的,但是是黑白的 //threshold1 第一个阈值 //threshold2 第二个阈值 //aperture_size Sobel 算子内核大小 cvCanny(in,out,lowThresh,highThresh,aperture); return out;}int main(int argc, char* argv[]){ IplImage* img=cvLoadImage("C:\\horse.jpg"); cvNamedWindow("Example-in"); cvShowImage("Example-in",img); IplImage* outgray=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); cvCvtColor( img, outgray, CV_BGR2GRAY );//转化为灰度图,cvCvtColor(原图, 处理后的图, 不同类型的颜色空间转换) cvNamedWindow("Example-outgray"); cvShowImage("Example-outgray",outgray); cvNamedWindow("Example-out"); cvShowImage("Example-out",doCanny(outgray,80,150,3)); cvWaitKey(0); cvReleaseImage(&img); cvReleaseImage(&outgray); cvDestroyWindow("Example-in"); cvDestroyWindow("Example-outgray"); cvDestroyWindow("Example-out"); return 0;}
运行结果:
2:cvCanny代码解释如下:
/*void cvCanny(const CvArr* img, CvArr* edges, double lowThresh, double highThresh, int apertureSize=3); 边缘检测算法 img:输入图像,为灰度图。 edges:输出图像,也是灰度图,是布尔图像。 lowThresh:下限阈值 highThresh:上线阈值 apertureSize:另一个中孔,通常,这个被sobel算子用到的中孔是cvCanny()在内部使用的。Sobel算子内核大小*/
阅读全文
0 0
- OpenCV-将图像转化为灰度图,然后边缘检测
- OpenCV-将图像两次缩放+转化为灰度图+边缘检测
- OpenCV将彩色图像转化为灰度图代码
- opencv将灰度图转化为RGB三通道图像
- 六.使用OpenCv将图像转化为灰度图像
- 使用OpenCv将图像转化为灰度图像
- 利用OpenCV和C++实现由RGB图像转化为灰度图,再将灰度图转化为二值图的程序
- 将视频图像转化为灰度视频
- 利用OpenCV的imread将RGB图像转化为灰度图像!
- opencv图像边缘检测
- 使用CImage类将RGB图像转化为灰度图像
- MATLAB将彩色图像转化为灰度图像
- 灰度图像--图像分割 Canny边缘检测
- python使用opencv将灰度图人脸图片转化为RGB
- 将彩色图片转化为灰度图
- 灰度图像的sobel边缘检测算法
- opencv(16)---图像边缘检测
- openCV实现图像边缘检测
- 裸机实验体验之usb启动配合dnw工具下载
- ZOJ-3732 Graph Reconstruction(判定无向图度数序列能否可图化)
- 事件回调 和通知方式的总结(EventBus框架的使用)
- OnClose()和 OnDestroy()
- 【安全牛学习笔记】WEBSHELL
- OpenCV-将图像转化为灰度图,然后边缘检测
- c++ inline variable 内联变量 c++17
- linux 网络编程:使用两线程实现socket同时收发数据
- 重新理解单例模式
- 胸腔阻抗成像中的常用术语
- 迅为Exynos4412开发板例程及注释——注册字符类设备
- 入口文件模块绑定
- ubuntu16.04安装+cuda8.0+cudnn5.1+MXNET gpu版本安装+tensorflow gpu版本安装+chainerGPU版本安装
- leetcode-496. Next Greater Element I