在本教程中,您将学习如何使用vpImageFilter类中实现的ViSP过滤函数。

#include <visp/vpDisplayD3D.h>
#include <visp/vpDisplayGDI.h>
#include <visp/vpDisplayGTK.h>
#include <visp/vpDisplayX.h>
#include <visp/vpDisplayOpenCV.h>
#include <visp/vpImageIo.h>
#include <visp/vpImageFilter.h>
void display(vpImage<unsigned char> &I, const std::string &title);
void display(vpImage<double> &D, const std::string &title);
void display(vpImage<unsigned char> &I, const std::string &title)
{#if defined(VISP_HAVE_X11)vpDisplayX d(I);
#elif defined(VISP_HAVE_OPENCV)vpDisplayOpenCV d(I);
#elif defined(VISP_HAVE_GTK)vpDisplayGTK d(I);
#elif defined(VISP_HAVE_GDI)vpDisplayGDI d(I);
#elif defined(VISP_HAVE_D3D9)vpDisplayD3d d(I);
#elsestd::cout << "No image viewer is available..." << std::endl;
#endifvpDisplay::setTitle(I, title.c_str());vpDisplay::display(I);vpDisplay::displayCharString(I, 15,15, "Click to continue...", vpColor::red);vpDisplay::flush(I);vpDisplay::getClick(I);
}
void display(vpImage<double> &D, const std::string &title)
{vpImage<unsigned char> I; // Image to displayvpImageConvert::convert(D, I);display(I, title);
}
int main(int argc, char** argv )
{try {if(argc != 2) {printf( "Usage: %s <image name.[pgm,ppm,jpeg,png,bmp]>\n", argv[0] );return -1;}vpImage<unsigned char> I;try {vpImageIo::read(I, argv[1]);}catch(...) {std::cout << "Cannot read image \"" << argv[1] << "\"" << std::endl;return -1;}display(I, "Original image");vpImage<double> F;vpImageFilter::gaussianBlur(I, F);display(F, "Blur (default)");vpImageFilter::gaussianBlur(I, F, 7, 2);display(F, "Blur (var=2)");vpImage<double> dIx;vpImageFilter::getGradX(I, dIx);display(dIx, "Gradient dIx");vpImage<double> dIy;vpImageFilter::getGradY(I, dIy);display(dIy, "Gradient dIy");
#if (VISP_HAVE_OPENCV_VERSION >= 0x020100)vpImage<unsigned char> C;vpImageFilter::canny(I, C, 5, 15, 3);display(C, "Canny");
#endifvpMatrix K(3,3); // Sobel kernel along xK[0][0] = 1; K[0][1] = 0; K[0][2] = -1;K[1][0] = 2; K[1][1] = 0; K[1][2] = -2;K[2][0] = 1; K[2][1] = 0; K[2][2] = -1;vpImage<double> Gx;vpImageFilter::filter(I, Gx, K);display(Gx, "Sobel x");size_t nlevel = 3;std::vector< vpImage<unsigned char> > pyr(nlevel);pyr[0] = I;for (size_t i=1; i < nlevel; i++) {vpImageFilter::getGaussPyramidal(pyr[i-1], pyr[i]);display(pyr[i], "Pyramid");}return 0;}catch(vpException &e) {std::cout << "Catch an exception: " << e << std::endl;return 1;}
}

首先是原始图像

Gaussian blur

C
Gradients computation

Canny edge detector

Convolution

Gaussian image pyramid

视觉伺服控制工具Visual Servoing Platform---VISP(2)----使用ViSP滤波图像。相关推荐

  1. 视觉伺服控制工具Visual Servoing Platform---VISP(7)----vpServo这个看懂了就会用VISP了,很简单

    看好了,基本上我们实现真实的机械臂控制的所有方法需要用到的类都可以在这个博客中找到. 这个类是整个VISP的核心部分了,因为其他的部分可以用现有的所有算法替换,但是这个vpServo和另一个姿态估计类 ...

  2. 视觉伺服控制工具Visual Servoing Platform---VISP(6)----基于4个平面点的姿态估计

    本教程重点介绍平面或非平面点的姿势估计.从它们在图像平面中的二维坐标以及在对象坐标系中指定的相应三维坐标,ViSP能够估计相机和对象坐标系之间的相对姿势.此姿势作为齐次矩阵cMo返回.请注意,要估计姿 ...

  3. 视觉伺服控制工具Visual Servoing Platform---VISP(4)----目标检测与跟踪

    使用ViSP,您可以使用vpDot或vpDot2类跟踪blob. #include <visp/vp1394CMUGrabber.h> #include <visp/vp1394Tw ...

  4. 视觉伺服控制完整解析

    视觉伺服控制完整解析 视觉伺服控制简介 相关符号及概念的说明 坐标变换 刚体运动 相机模型 视觉伺服控制理论 基于位置的视觉伺服控制 基于图像的视觉伺服控制 参考文献 视觉伺服控制简介 视觉伺服控制( ...

  5. Visp_ros学习笔记(二):在Gazebo环境下实现Pionner3dx移动机器人视觉伺服仿真

    开发环境:Unbuntu 18.04 LTS + ROS Melodic + ViSP 3.3.1   本文主要介绍了如何实现Pionner3dx移动机器人视觉伺服仿真,仿真环境是ROS+Gazebo ...

  6. matlab相机标定_【显微视界】基于视觉伺服的工业机器人系统研究(摄像机标定、手眼标定、目标单目定位)...

    今日光电        有人说,20世纪是电的世纪,21世纪是光的世纪:知光解电,再小的个体都可以被赋能.欢迎来到今日光电! ----与智者为伍 为创新赋能---- 标定技术 常见的机器人视觉伺服中要 ...

  7. scare机器人如何手眼标定_基于视觉伺服的工业机器人系统研究(摄像机标定、手眼标定、目标单目定位)...

    击上方"新机器视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 标定技术 常见的机器人视觉伺服中要实现像素坐标与实际坐标的转换,首先 ...

  8. 视觉伺服研究学习——2021年10月

    一.基础学习课程 深度学习 计算机视觉 机器学习 约定: 黄色高亮表示关键词,不认识的知识点: 绿色下划线:重要的思想观点,精髓的理解. 二.论文学习 1.室内动态视觉SLAM算法研究         ...

  9. 机械手基础知识(3)之基于图像的视觉伺服与基于位置的视觉伺服

    ** 基于图像的视觉伺服与基于位置的视觉伺服 ** 有关于机械手位姿问题的理解,可以去看我关于机械手正逆运动学分析的文章 首先说,基于图像的视觉伺服与基于位置的视觉伺服主要表现形式在于图像雅可比矩阵的 ...

最新文章

  1. nginx 学习笔记(3) nginx管理
  2. 面试必备:LinkedHashMap源码解析(JDK8)
  3. SQLServer 清空某个库所有表
  4. 【励志好文】老爸推荐的好文,受益良多!
  5. Centos5 install vnc
  6. 反射的基本知识(详解)
  7. OpenLiberty:注入时出错,适用于TomEE和Wildfly
  8. Java 8状态更新
  9. 计算机课禁用监视器,如何设置关闭监视器硬盘系统待机项为从来不
  10. 我的世界java版使用剑_我的世界:JAVA版藏“私货”内置绝世好剑与神功,你玩的版本有吗...
  11. C#中使用FFMPEG切割、合并视频。
  12. Redmi小金刚系列七个月销量破2000万台 Note8系列新品即将发布
  13. ABI 大屏(示例布局)
  14. Spring注解@ConfigurationPropertie
  15. 亚马逊机器学习工程师面试怎么过?
  16. Mac硬盘格式转化好帮手——Tuxera NTFS
  17. cownew开源-cownewStudio抢先预览
  18. 计算机的三种基础运算,计算机基础知识(计算机的基本运算).ppt
  19. win10 安装gym[all]与mujoco的踩坑日志
  20. python3.7.2安装pywifi_Python pywifi包_程序模块 - PyPI - Python中文网

热门文章

  1. 破解打开证书加密的PDF文档-数字证书(电子书私钥)下载和导入教程
  2. android 拨号器 目录,Android 电话拨号器
  3. idea 跳转到方法调用处
  4. 【algods】4.树和二叉树、完全二叉树、满二叉树、二叉查找树、平衡二叉树、堆、哈夫曼树、散列表...
  5. 机器语言、汇编语言和高级语言之间的关系
  6. html mp4播放器插件,jQuery mp4视频播放器插件
  7. LwIP应用笔记(三):在RTOS环境下运行LwIP协议栈
  8. NMEA报文解析程序(c语言)-命令解析
  9. 电脑卡死、死机、黑屏怎么办?驱动人生教你如何解决
  10. Element组件(input输入框)