资源简介
opencv3.3 prewitt算子边缘检测c++代码实现,具有很好的检测效果
代码片段和文件信息
// PrewittEdgeDetectProgram.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include
#include
#include
using namespace std;
using namespace cv;
void conv2D(InputArray src InputArray kernel OutputArray dst int ddepth Point anchor = Point(-1 -1) int borderType = BORDER_DEFAULT)
{
//卷积运算卷积核逆时针旋转180度
Mat kernelFlip;
flip(kernel kernelFlip -1);
//卷积运算第二步
filter2D(src dst ddepth kernelFlip anchor 0.0 borderType);
}
//可分离的离散二维卷积,先进行垂直方向的卷积,然后进行水平方向的卷积
void sepConv2D_Y_X(InputArray src OutputArray src_kerY_kerX int ddepth
InputArray kernelY InputArray kernelX Point anchor = Point(-1 -1) int borderType = BORDER_DEFAULT)
{
//输入矩阵与垂直方向上的卷积核进行卷积运算
Mat src_kerY;
conv2D(src kernelY src_kerY ddepth anchor borderType);
//上面的得到的卷积结果,接着和水平方向上的卷积核进行卷积运算
conv2D(src_kerY kernelX src_kerY_kerX ddepth anchor borderType);
}
//可分离的离散二位卷积,先进行水平方向的卷积,然后进行垂直方向的卷积
void sepConv2D_X_Y(InputArray src OutputArray src_KerX_kerY int ddpeth
InputArray KernelX InputArray KernelY Point anchor = Point(-1 -1) int borderType = BORDER_DEFAULT)
{
//输入矩阵与水平方向上的卷积核卷积
Mat src_kerX;
conv2D(src KernelX src_kerX ddpeth anchor borderType);
//上面的结果和垂直方向上的卷积核卷积,得到输出结果
conv2D(src_kerX KernelY src_KerX_kerY ddpeth anchor borderType);
}
void prewitt(InputArray src OutputArray dst int ddepth int x int y = 0 int borderType = BORDER_DEFAULT)
{
CV_Assert(!(x == 0 && y == 0));
//如果x不等于0src和prewitt_x卷积核卷积
if (x!=0&&y==0)
{
//可分离的prewitt_x卷积核
Mat prewitt_x_y = (Mat_(3 1) << 1 1 1);
Mat prewitt_x_x = (Mat_(1 3) << 1 0 -1);
//可分离的离散的二维卷积
sepConv2D_Y_X(src dst ddepth prewitt_x_y prewitt_x_x Point(-1 -1) borderType);
}
//如果x等于0且y不等于0,src和prewitt_y卷积核卷积运算
if (y!=0&&x==0)
{
//可分离的prewitt_y卷积核
Mat prewitt_y_x = (Mat_(1 3) << 1 1 1);
Mat prewitt_y_y = (Mat_(3 1) << 1 0 -1);
//可分离的离散二维卷积
sepConv2D_X_Y(src dst ddepth prewitt_y_x prewitt_y_y Point(-1 -1) borderType);
}
}
int main()
{
Mat srcImage;
srcImage = imread(“0.jpg“ 0);
if (!srcImage.data)
{
cout << “没有图片“ << endl;
return -1;
}
//图像矩阵和prewitt_x卷积核卷积
Mat img_prewitt_x;
prewitt(srcImage img_prewitt_x CV_32FC1 1 0);
//图像矩阵与prewitt_y卷积核卷积
Mat img_prewitt_y;
prewitt(srcImage img_prewitt_y CV_32FC1 0 1);
//数据类型转换,边缘强度的灰度级显示
Mat abs_img_prewitt_x abs_img_prewitt_y;
convertScaleAbs(img_prewitt_x abs_img_prewitt_x 1 0);
convertScaleAbs(img_prewitt_y abs_img_prewitt_y 1 0);
imshow(“垂直方向的边缘“ abs_img_prewitt_x);
imshow(“水平方向的边缘“ abs_img_prewitt_y);
imwrite(“edge_Y.bmp“ abs_img_prewitt_x);
imwrite(“edge_X.bmp“ abs_img_prewitt_y);
//平方根方式求出边缘强度
Mat img_prewitt_x2 img_prewitt_y2;
pow(img_prewitt_x 2.0 img_prewitt_x2);
pow(img_prewitt_y 2.0 img_prewitt_y2);
Mat edge;
sqrt
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 27648 2018-08-07 10:42 PrewittEdgeDetectProgram\.vs\PrewittEdgeDetectProgram\v14\.suo
文件 3997696 2018-08-04 14:51 PrewittEdgeDetectProgram\ipch\PREWITTEDGEDETECTPROGRAM-ed947e59\PREWITTEDGEDETECTPROGRAM-4f97f0df.ipch
文件 3538944 2018-08-04 14:46 PrewittEdgeDetectProgram\ipch\PREWITTEDGEDETECTPROGRAM-ed947e59\PREWITTEDGEDETECTPROGRAM-7c83cb41.ipch
文件 111446 2018-08-07 10:38 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\0.jpg
文件 540726 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\edge.bmp
文件 540726 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\edge_X.bmp
文件 540726 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\edge_Y.bmp
文件 3515 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\PrewittEdgeDetectProgram.cpp
文件 8701 2018-08-04 15:03 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\PrewittEdgeDetectProgram.vcxproj
文件 1331 2018-08-04 14:46 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\PrewittEdgeDetectProgram.vcxproj.filters
文件 1629 2018-08-04 14:46 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\ReadMe.txt
文件 228 2018-08-04 14:46 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\stdafx.cpp
文件 234 2018-08-04 14:46 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\stdafx.h
文件 240 2018-08-04 14:46 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\targetver.h
文件 2414 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittE.93AACFF6.tlog\CL.command.1.tlog
文件 34586 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittE.93AACFF6.tlog\CL.read.1.tlog
文件 2460 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittE.93AACFF6.tlog\CL.write.1.tlog
文件 2224 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittE.93AACFF6.tlog\li
文件 3910 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittE.93AACFF6.tlog\li
文件 1326 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittE.93AACFF6.tlog\li
文件 250 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittE.93AACFF6.tlog\PrewittEdgeDetectProgram.lastbuildstate
文件 374 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittEdgeDetectProgram.log
文件 682860 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittEdgeDetectProgram.obj
文件 3473408 2018-08-04 17:09 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittEdgeDetectProgram.pch
文件 12315 2018-08-04 17:09 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\stdafx.obj
文件 1166336 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\vc140.idb
文件 2265088 2018-08-07 10:39 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\vc140.pdb
文件 1354 2018-08-04 14:46 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram.sln
文件 16429056 2018-08-07 10:42 PrewittEdgeDetectProgram\PrewittEdgeDetectProgram.VC.db
文件 162816 2018-08-07 10:39 PrewittEdgeDetectProgram\x64\Debug\PrewittEdgeDetectProgram.exe
............此处省略17个文件信息
- 上一篇:迷宫益智游戏,c++mfc编写,亲测有效
- 下一篇:MFC黄金矿工小游戏
相关资源
- MFC中使用OpenCV显示选定文件夹中所有
- 车牌识别系统和车型识别系统源代码
- opencv 模糊C均值 c++
- 基于opencv的图像配准程序
- VC++直方图均衡化显示图像及直方图
- Opencv+VC6.0实现摄像头视频的监控
- opencv入门教程(C++版)
- 简单的几何图形识别程序源代码
- 虹膜分割 Iris Segmentation C++和opencv实现
- C++(OPENCV)摄像头标定代码带图片O
- 基于Opencv的交通流量实时检测
- 棋盘格标定图
- opencv视觉定位,C++编写的
- opencv循迹
- 任意曲线(S型等)调整图像色调,对
- Visual C++利用OpenCV对图像进行人脸识别
- 运用opencv的c++图像单点相关系数匹配
- VS2008 opencv MFC 计算米粒的个数及最大
- 14_车牌识别系统.zip
- 13_车型识别系统.zip
- 人脸跟踪基于opencv
- surf特征提取与匹配
- SRAD算法C++实现
- MFC+Opencv 摄像头保存为图像和视频
- TLD 全C++代码 OpenCV3.0.0 VS2013 工程文件
- [源码&文档] 基于OpenCV的室内目标跟踪
- 基于特征点匹配的视频稳像
- 制作自己的MFC MDI OPENCV程序框架
- 基于opencv开发的谷歌小恐龙的小游戏
- OpenCV图像模糊程序 by浅墨
评论
共有 条评论