1 #include "opencv2/imgproc/imgproc.hpp" 2 #include "opencv2/highgui/highgui.hpp" 3 #include <stdlib.h> 4 #include <stdio.h> 5 6 using namespace cv; 7 8 /** @function main */ 9 int main( int argc, char** argv ) 10 { 11 12 Mat src, src_gray; 13 Mat grad; 14 char* window_name = "Sobel Demo - Simple Edge Detector"; 15 int scale = 1; 16 int delta = 0; 17 int ddepth = CV_16S; 18 19 int c; 20 21 /// 装载图像 22 src = imread( argv[1] ); 23 24 if( !src.data ) 25 { return -1; } 26 27 GaussianBlur( src, src, Size(3,3), 0, 0, BORDER_DEFAULT ); 28 29 /// 转换为灰度图 30 cvtColor( src, src_gray, CV_RGB2GRAY ); 31 32 /// 创建显示窗口 33 namedWindow( window_name, CV_WINDOW_AUTOSIZE ); 34 35 /// 创建 grad_x 和 grad_y 矩阵 36 Mat grad_x, grad_y; 37 Mat abs_grad_x, abs_grad_y; 38 39 /// 求 X方向梯度 40 //Scharr( src_gray, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT ); 41 Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT ); 42 convertScaleAbs( grad_x, abs_grad_x ); 43 44 /// 求Y方向梯度 45 //Scharr( src_gray, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT ); 46 Sobel( src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT ); 47 convertScaleAbs( grad_y, abs_grad_y ); 48 49 /// 合并梯度(近似) 50 addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad ); 51 52 imshow( window_name, grad ); 53 54 waitKey(0); 55 56 return 0; 57 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)