\tutorial_code\ImgTrans\

本文介绍了三种常见的边缘检测技术:Sobel算子、Scharr算子和Laplacian算子,并详细探讨了Canny边缘检测算法的特点。文章还对比了不同方法在图像处理中的应用效果。





******重大更新*******

为了尽快进入到更有意思的例程

以后一些内容太少的例程

我们就集中一下

或者

跳过






第一个获得跳过殊荣的是:
copyMakeBorder_demo.cpp
给图像添加边界

讲得是我们已经讲过的
设置边界

两种方法:

BORDER_CONSTANT: 使用常数填充边界 (i.e. 黑色或者0 )
BORDER_REPLICATE: 复制原图中最临近的行或者列。


第一个获得集中的是:

CannyDetector_Demo.cpp
Laplace_Demo.cpp
Sobel_Demo.cpp






【17】边缘检测算子


\OpenCV2.3.1\opencv\samples\cpp\tutorial_code\ImgTrans

大家好
我是 lena 桑
 = =

你們真的很幸運

今天我會看起來有點不一樣哦




素顏沒問題的啦!

是不是~

我想去上康熙的卸妝單元可是B兔哥說沒差沒看點

我是該開心呢還是開心呢。。。


sobel

Sobel 算子是一个离散微分算子 (discrete differentiation operator)。
它用来计算图像灰度函数的近似梯度。
Sobel 算子结合了高斯平滑和微分求导。



什麽 = = 這是誰幹的好事!!

lena桑很滿意啊!!你看那線條~



void Sobel(const Mat& src, Mat& dst, int ddepth, int xorder, int yorder, int ksize=3, double scale=1, double delta=0, int borderType=BORDER_DEFAULT)

src_gray: 在本例中为输入图像,元素类型 CV_8U
grad_x/grad_y: 输出图像.
ddepth: 输出图像的深度,设定为 CV_16S 避免外溢。
x_order: x 方向求导的阶数。
y_order: y 方向求导的阶数。
scale, delta 和 BORDER_DEFAULT: 使用默认值





 Scharr

当内核大小为 3 时,
以上Sobel内核可能产生比较明显的误差
(毕竟,Sobel算子只是求取了导数的近似值)。
 为解决这一问题,OpenCV提供了 Scharr 函数,
但该函数仅作用于大小为3的内核。
该函数的运算与Sobel函数一样快,但结果却更加精确




你好,我是lena桑

不要怕

那是我的 尸斑~~~~~

(我才不會承認我的皮膚差呢!)


void Scharr(const Mat& src, Mat& dst, int ddepth, int xorder, int yorder, double scale=1, double delta=0, int borderType=BORDER_DEFAULT)




 Laplacian




好久沒吃 人心 了,你們快喂我啊

難道你們忍心看我lena桑消散了嗎


void Laplacian(const Mat& src, Mat& dst, int ddepth, int ksize=1, double scale=1, double delta=0, int borderType=BORDER_DEFAULT)
src_gray: 输入图像。
dst: 输出图像
ddepth: 输出图像的深度。 因为输入图像的深度是 CV_8U ,这里我们必须定义 ddepth = CV_16S 以避免外溢。
kernel_size: 内部调用的 Sobel算子的内核大小,此例中设置为3。
scale, delta 和 BORDER_DEFAULT: 使用默认值。



Canny
低错误率: 标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报。
高定位性: 标识出的边缘要与图像中的实际边缘尽可能接近。
最小响应: 图像中的边缘只能标识一次。




我要吃 人心!!!!!!!!!!!!!!!!!!!!!!!




我只吃了一口哦




= 3= 有活了??




  = = 感覺不對




我才不會告訴你剛才是 迴光返照 呢!!!




撒喲娜拉!




所以 sobel 和 canny 誰贏一些??

<think>我们正在处理用户关于ROS工作空间路径的错误。用户试图进入`tutorial_ws/src`目录,但系统提示“没有那个文件或目录”。根据引用[2]中的步骤,我们需要确保工作空间已正确创建。解决步骤:1.检查工作空间目录是否存在:用户可能还没有创建`tutorial_ws`工作空间,或者创建的位置不在家目录下。2.按照标准步骤创建工作空间:如果尚未创建,则需创建`tutorial_ws`工作空间及其`src`子目录,并初始化。3.路径拼写检查:确保用户输入的路径与创建的工作空间路径完全一致(注意大小写和特殊字符)。具体操作:首先,我们建议用户检查当前家目录下是否存在`tutorial_ws`目录:ls ~如果不存在,则按照引用[2]的步骤创建:mkdir-p~/tutorial_ws/srccd~/tutorial_ws/srccatkin_init_workspacecd..catkin_makesource devel/setup.bash如果存在,则检查`src`目录是否在`tutorial_ws`下:ls ~/tutorial_ws如果用户创建的工作空间名称有误(例如拼写错误),则需要更正命令或重命名目录。另外,引用[1]和[5]提到了环境变量的问题,但当前错误是目录不存在,所以先解决目录问题。注意:用户的环境是Ubuntu,路径为`sheep@sheep-virtual-machine:~$`,表示当前在家目录,所以`tutorial_ws`应该创建在家目录下。因此,回答将指导用户创建正确的工作空间结构。</think>### ROS工作空间`src`目录不存在的解决方法 根据引用[2]的标准ROS工作空间创建流程,出现`cd tutorial_ws/src: 没有那个文件或目录`错误通常有以下几个原因: #### 核心解决步骤: 1. **创建工作空间结构**(参考引用[2]): ```bash mkdir -p ~/tutorial_ws/src # 递归创建目录 cd ~/tutorial_ws ``` 2. **初始化工作空间**(关键步骤): ```bash cd src catkin_init_workspace # 创建CMakeLists.txt符号链接[^2] ``` 3. **构建工作空间**: ```bash cd .. catkin_make # 生成build和devel目录 ``` 4. **验证目录结构**: ```bash ls ~/tutorial_ws # 应显示src, build, devel三个目录 ``` #### 常见错误排查: | 问题类型 | 检测命令 | 解决方法 | |---------|----------|---------| | **目录未创建** | `ls ~ | grep tutorial_ws` | 执行`mkdir -p ~/tutorial_ws/src` | | **未初始化** | `ls ~/tutorial_ws/src/CMakeLists.txt` | 在`src`内运行`catkin_init_workspace` | | **路径拼写错误** | `echo ~/tutorial_ws` | 检查大小写和特殊字符 | | **环境未配置** | `echo $ROS_PACKAGE_PATH` | 执行`source devel/setup.bash` | #### 补充说明: - 工作空间名称`tutorial_ws`可自定义(如引用[2]所述),但后续命令需保持一致 - 每次新建终端需重新`source devel/setup.bash`或添加到`.bashrc` - 若使用ROS2(引用[4]),需改用`colcon build`构建 > 重要提示:所有ROS功能包(如引用[3][4])都必须放在`src`目录下,否则`catkin_make`无法识别[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值