资源简介
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黄金矿工小游戏
相关资源
- 人脸识别(opencv_facedetect_v4l2)
- 基于opencv的模板匹配代码
- opencv图片扫描以及校正
- opencv手部轮廓识别以及轨迹识别
- opencv2 3D标定.cpp
- 基于opencv漫水填充算法综合
- opencv激光中心线的提取
- OpenCV Computer Vision Application Programming
- 基于图割的图像分割OpenCV+MFC实现
- 识别魔方颜色
- opencv版俄罗斯方块源码
- VS2013 / MFC + OpenCV 2.4.9实现视频的播放
- 粒子滤波器+目标跟踪的C++实现,VS2
- 张平OpenCV算法精讲基于python和C++教材
- 虹膜识别开源代码OSIRIS4.1基于opencv
- Sift特征点提取与匹配opencv库
- YCbCr、混合高斯以及YCbCg肤色检测模型
- 光流法代码
- OpenCV打开摄像机显示在MFC窗口工程源
- 使用c++读取图像到二维矩阵
- 三维点云的圆柱面拟合
- MFC+OPENCV摄像机标定程序
- 基于特征脸的人脸识别MFC+OpenCV
- opencv图像处理MFC
- OPENCV人脸检测加角点检测并输出坐标
- FillHole.rar
- 道路提取算法 c++ opencv
- PCA代码实现详解
- opencv卡尔曼滤波
- SeamCarving opencv c++
评论
共有 条评论