opencv—学习笔记6,sobel边缘检测
来源:互联网 发布:全球十大金融公司知乎 编辑:程序博客网 时间:2024/06/09 15:59
一、sobel算子
1、是离散微分算子,用来计算图像灰度的近似梯度
2、sobel算子功能集合高斯平滑和微分求导
3、又被称为一阶微分算子、求导算子,在水平和垂直两个方向上求导,得到图像x方向与y方向梯度图像
通过权重扩大差异
有时也使用如下更简单的公式代替: (为增加计算速度)
4、求取导数近似值,Kernel=3时不时很准确,opencv使用改进版本scharr函数,算子如下:
二、API
CV:Sobel(
InputArray src//输入图像
OutputArray dst//输出图像,大小与输入图像一致(对应规则见下表)
int depth //输出图像深度
int dx //x方向,几阶导数
int dy//y方向,几阶导数
int ksize,sobel算子kernel大小必须是1、3、5、7(一般取3)
double scale=1
double delta=0
int border Type=BORDER_DEFAULT
)
- . InputArray src: 输入图像
- . OutputArray dst: 输出图像
- . int ddepth: 输出图像深度,与输入图像深度对应关系如下表所示:
三、代码:
#include<opencv2/opencv.hpp>
#include<highgui.h>#include<iostream>
using namespace cv;
using namespace std;
Mat src,dst,gray,x_gray,y_gray;
int main(int argc,char**argv)
{
src=imread("1.jpg");
namedWindow("my picture",CV_WINDOW_AUTOSIZE);
imshow("my picture",src);
waitKey(100);
GaussianBlur(src,dst,Size(3,3),0,0,BORDER_DEFAULT); //高斯降噪,平滑
cvtColor(dst,gray,COLOR_BGR2GRAY); //转为灰度图
namedWindow("gray image",CV_WINDOW_AUTOSIZE);
imshow("gray image",gray);
waitKey(100);
Mat xgray,ygray;
Sobel(gray,x_gray,-1,1,0,3,1,0);
Sobel(gray,y_gray,-1,1,0,3,1,0);
convertScaleAbs(x_gray,x_gray); //先缩放元素再取绝对值,最后转换格式为8bit型
convertScaleAbs(y_gray,y_gray);
imshow("xgray",x_gray);
imshow("ygray",y_gray);
waitKey(100);
/*Mat xygray;
addWeighted(x_gray,0.5,y_gray,0.5,0,xygray); 合并图像函数
imshow("xygray",xygray);*/
Mat xygray=Mat(xgray.size(),xgray.type());
//printf("type:%d",xgray.type ());
int width=xgray.cols; 根据原理计算
int height=ygray.rows;for (int row=0;row<height;row++){
for(int col=0;col<width;col++){
int xg=xgray.at <char>(row,col); 数据类型需注意选择合适的
int yg=ygray.at <char>(row,col);
int xy=xg+yg;
xygray.at<char>(row,col)=saturate_cast<char>(xy);
}
}
imshow("xygray",xygray);
waitKey(0);
return(0);
}
阅读全文
0 0
- opencv—学习笔记6,sobel边缘检测
- opencv学习笔记(二十一) Sobel算子边缘检测
- opencv实现sobel边缘检测
- OpenCV笔记:图像边缘检测Sobel,Laplace,Canny
- [学习opencv]图像sobel、laplacian、canny边缘检测
- OpenCV学习笔记(6)——边缘检测
- OpenCV学习笔记(6)——边缘检测
- OpenCV学习笔记(13)OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
- opencv中用Sobel算子进行边缘检测
- 【OpenCV】边缘检测:Sobel、拉普拉斯算子
- opencv中用Sobel算子进行边缘检测
- 【OpenCV】边缘检测:Sobel、拉普拉斯算子
- 【OpenCV】边缘检测:Sobel、拉普拉斯算子
- opencv之边缘检测(sobel )
- opencv边缘检测Sobel和Canny
- 【OpenCV】边缘检测、梯度计算 Sobel Mat
- 【OpenCV】边缘检测:Sobel、拉普拉斯算子
- OpenCV 边缘检测:Sobel、拉普拉斯算子
- Qt操作SQLite数据库——创建、打开、关闭、增加、删除和修改操作
- 层次聚类的python实现
- 国际化i18n流程汇总图解
- epoll
- ESL作业笔记2.1.
- opencv—学习笔记6,sobel边缘检测
- Qt中数据库查询方法
- 图片大小自适应
- MATLAB匿名函数的应用1
- 内核编译问题
- LeetCode 160. Intersection of Two Linked Lists
- 中国天气网免费天气API
- Redis 集合排序
- python3.5、pyqt5项目,pyinstaller打包exe