利用OpenCV的Sobel算子求得图像的梯度信息
2014-08-30 17:03
253 查看
第一次写博客,之前都是看别人的博文,把自己每天做的记下来,以便今后查阅。言简意赅!
Sobel算子X方向:
y方向:
原图:
源码:
结果,梯度幅度:
梯度方向:
Sobel算子X方向:
y方向:
原图:
源码:
#include "stdafx.h" #include <opencv\cv.h> #include <opencv2\highgui\highgui.hpp> #include <iostream> using namespace cv; int _tmain(int argc, _TCHAR* argv[]) { // 读取图像 Mat img = imread("E:\\VC++Projects\\road.jpg"); // 转换为灰度图像 Mat gray; cvtColor(img,gray,CV_BGR2GRAY); // 求得x和y方向的一阶微分 Mat sobelx; Mat sobely; Sobel(gray, sobelx, CV_32F, 1, 0, 3); Sobel(gray, sobely, CV_32F, 0, 1, 3); // 求得梯度和方向 Mat norm; Mat dir; cartToPolar(sobelx, sobely, norm, dir); // 转换为8位单通道图像进行显示 double normMax; minMaxLoc(norm, NULL, &normMax); Mat grad; norm.convertTo(grad, CV_8UC1, 255.0/normMax, 0); double dirMax; minMaxLoc(dir, NULL, &dirMax); Mat angle; dir.convertTo(angle, CV_8UC1, 255.0/dirMax, 0); namedWindow("grad"); imshow("grad",grad); namedWindow("angle"); imshow("angle",angle); waitKey(0); img.release(); gray.release(); sobelx.release(); sobely.release(); norm.release(); dir.release(); grad.release(); angle.release(); return 0; }
结果,梯度幅度:
梯度方向:
相关文章推荐
- Python OpenCV学习笔记之:图像梯度处理:Laplacian,Sobel算子
- 利用opencv函数计算图像的梯度幅度和梯度方向
- 利用Sobel算子,求梯度图像
- 快速利用opencv合并图像
- 运用opencv 读取BMP图像像素信息 代码及实现
- opencv图像处理梯度边缘和角点
- opencv图像处理梯度边缘和角点
- OpenCV学习——图像信息读取和倒置
- opencv中如何利用mat来获取连续内存的图像区域,并改变形状
- opencv2.3读取kinect深度信息和彩色图像
- 利用OpenCV读入,显示并保存图像
- 利用OpenCV实现图像的阈值分割
- 利用FSO取得图像文件信息
- 利用OpenCV实现图像的仿射变换
- 我的OpenCV学习笔记(三):利用操作像素完成简单的图像处理:加入椒盐噪声、图像翻转、改变对比度、图像锐化
- 利用OpenCV计算图像的垂直和水平积分投影
- OPENCV用户手册之图像处理部分(之一):梯度、边缘与角点(中文翻译)
- 如何将利用OpenCV加载的图像显示在窗口位置?
- OpenCV 利用MFC的Picture控件显示和处理图像
- opencv 利用滚动条调整图像亮度