• 大小: 7.13MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-02
  • 语言: C/C++
  • 标签: opencv  prewitt  

资源简介

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\link.command.1.tlog

     文件       3910  2018-08-07 10:39  PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittE.93AACFF6.tlog\link.read.1.tlog

     文件       1326  2018-08-07 10:39  PrewittEdgeDetectProgram\PrewittEdgeDetectProgram\x64\Debug\PrewittE.93AACFF6.tlog\link.write.1.tlog

     文件        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个文件信息

评论

共有 条评论