opencv3中scharr滤波器
2015-10-11 00:00
435 查看
#include<opencv2/opencv.hpp> #include<iostream> #include<vector> using namespace std; using namespace cv; int g_nWay = 0, g_nDirection = 0, g_nValue = 0; int main() { Mat srcImage = imread("1.jpg"); imshow("【原图】", srcImage); Mat grayImage; cvtColor(srcImage, grayImage, CV_BGR2GRAY); blur(srcImage, srcImage, Size(3, 3)); blur(grayImage, grayImage, Size(3, 3)); Mat dstImage, XImage, YImage, XYImage; Mat AbsXImage, AbsYImage, AbsXYImage; namedWindow("【显示窗口】", 0); createTrackbar("Gray/BGR", "【显示窗口】", &g_nWay, 1, 0); createTrackbar("X/Y/XY", "【显示窗口】", &g_nDirection, 2, 0); char key; vector<Mat> v; while (1) { if (!g_nWay) { Scharr(grayImage, XImage, CV_16S, 1, 0, 1, 0); //将得到的矩阵转换为8bit的矩阵 convertScaleAbs(XImage, AbsXImage); Scharr(grayImage, YImage, CV_16S, 0, 1, 1, 0); convertScaleAbs(YImage, AbsYImage); /*v.push_back(AbsXImage); v.push_back(AbsYImage); merge(v, XYImage);*/ addWeighted(AbsXImage, 0.5, AbsYImage, 0.5, 0, XYImage); if (g_nDirection == 0) dstImage = AbsXImage; if (g_nDirection == 1) dstImage = AbsYImage; if (g_nDirection == 2) dstImage = XYImage; } if (g_nWay) { Scharr(srcImage, XImage, CV_16S, 1, 0, 1, 0); //将得到的矩阵转换为8bit的矩阵 convertScaleAbs(XImage, AbsXImage); Scharr(srcImage, YImage, CV_16S, 0, 1, 1, 0); convertScaleAbs(YImage, AbsYImage); addWeighted(AbsXImage, 0.5, AbsYImage, 0.5, 0, XYImage); if (g_nDirection == 0) dstImage = AbsXImage; if (g_nDirection == 1) dstImage = AbsYImage; if (g_nDirection == 2) dstImage = XYImage; } imshow("【显示窗口】", dstImage); key = waitKey(10); if (key == 27) break; } }
相关文章推荐
- Docker 命令笔记
- 有关于kali linux安装eclipse出现的一系列问题
- Eclipse的git插件EGit在Linux上提交时的问题与解决
- 阿里云linux服务器如何挂载数据盘
- opencv3中Canny边缘检测-Canny函数
- apache反向代理
- 【10.04】【整理收集】那些神器级别的BT磁力搜索网站
- 消息循环与Looper
- Linux开发中,make命令的使用
- 编译OpenCV文档
- bashrc - PS1(提示符配色)
- RHEL 7 & CentOS 7禁用IPV6 的影响!
- 安装OpenCV
- Nginx进阶内容
- 再来说说linux中重要的alias命令------从findcpp命令说起
- Nginx介绍和安装
- 统计网站访问量的小例子
- Visual EmbedLinux Tools 更新到 0.1.7
- 采用dlopen、dlsym、dlclose加载动态链接库
- GNU/Linux 与开源文化的那些人和事