資源簡(jiǎn)介
opencv3.3 prewitt算子邊緣檢測(cè)c++代碼實(shí)現(xiàn),具有很好的檢測(cè)效果

代碼片段和文件信息
//?PrewittEdgeDetectProgram.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#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)
{
//卷積運(yùn)算卷積核逆時(shí)針旋轉(zhuǎn)180度
Mat?kernelFlip;
flip(kernel?kernelFlip?-1);
//卷積運(yùn)算第二步
filter2D(src?dst?ddepth?kernelFlip?anchor?0.0?borderType);
}
//可分離的離散二維卷積,先進(jìn)行垂直方向的卷積,然后進(jìn)行水平方向的卷積
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)
{
//輸入矩陣與垂直方向上的卷積核進(jìn)行卷積運(yùn)算
Mat?src_kerY;
conv2D(src?kernelY?src_kerY?ddepth?anchor?borderType);
//上面的得到的卷積結(jié)果,接著和水平方向上的卷積核進(jìn)行卷積運(yùn)算
conv2D(src_kerY?kernelX?src_kerY_kerX?ddepth?anchor?borderType);
}
//可分離的離散二位卷積,先進(jìn)行水平方向的卷積,然后進(jìn)行垂直方向的卷積
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);
//上面的結(jié)果和垂直方向上的卷積核卷積,得到輸出結(jié)果
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卷積核卷積運(yùn)算
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?<“沒(méi)有圖片“?< 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);
//數(shù)據(jù)類型轉(zhuǎn)換,邊緣強(qiáng)度的灰度級(jí)顯示
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);
//平方根方式求出邊緣強(qiáng)度
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
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
????..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個(gè)文件信息
- 上一篇:迷宮益智游戲,c++mfc編寫,親測(cè)有效
- 下一篇:MFC黃金礦工小游戲
評(píng)論
共有 條評(píng)論