• 大小: 346KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-19
  • 语言: C/C++
  • 标签: sobel  边缘检测  

资源简介

运用经典的sobel算法对图片进行边缘检测,c/c++代码实现。

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “windowsx.h“
#include “math.h“
#include “BianYuanJianCeDib.h“
#include “MainFrm.h“
#include “DynSplitView2.h“
 
BianYuanJianCeDib::BianYuanJianCeDib()
{
  
}
BianYuanJianCeDib::~BianYuanJianCeDib()
{
}

/***************************************************************/
/*函数名称:Templat(BYTE *m_pdata int wide int height int tempH int tempW int tempMX int tempMY float *fpArray float fCoef)                                         */
/*函数类型:void                                               */
/*参数:BYTE* m_pdata:指向原DIB图像指针                        */
/*      int wide:原图像宽度                                    */
/*      int height:原图像高度                                  */
/*      int tempH:模板高度                                     */
/*      int tempW:模板宽度                                     */
/*      int tempMX:模板的中心元素X坐标(/*      int tempMY:模板的中心元素Y坐标(/*      float *fpArray:指向模板数组的指针                      */
/*      float fCoef:模板系数                                  */
/*返回值:处理成功返回TRUE;处理失败返回FALSE。                 */
/*功能:用指定模板对灰度图像进行操作。                         */
/***************************************************************/
void BianYuanJianCeDib::Templat(BYTE *m_pdata int wide int height int tempH int tempW int tempMX int tempMY float *fpArray float fCoef)
{   
int ijkl;  //循环变量
    BYTE*  temp=new BYTE[wide*height];    //新图像缓冲区
//初始化新图像为原始图像
    memcpy( tempm_pdatawide*height);
    float fResult;    //像素值计算结果
for(j=tempMY;j for(i=tempMX;i {
//计算像素值
fResult=0;
for(k=0;k for(l=0;l fResult=fResult+m_pdata[(j-tempMY+k)*wide+(i-tempMX+l)]*fpArray[k*tempW+l];
//乘上系数
fResult*=fCoef;
//取绝对值
fResult=(float)fabs(fResult);
//判断是否超过255
if(fResult>255)
//若超过255,直接赋值为255
                temp[j*wide+i]=255;
else
//未超过255,赋值为计算结果
temp[j*wide+i]=(int)(fResult+0.5);
}
    memcpy(m_pdata tempwide*height);   //复制处理后的图像
delete  temp;
}

/***************************************************************/
/*函数名称:Templat24bit(BYTE *m_pdata int DibWidth int height int tempH int tempW int tempMX int tempMY float *fpArray float fCoef)                                         */
/*函数类型:void                                               */
/*参数:BYTE* m_pdata:指向原DIB图像指针                        */
/*      int DibWidth:原图像宽度                                */
/*      int height:原图像高度                                  */
/*      int tempH:模板高度                                     */
/*      int tempW:模板宽度                                     */
/*      int tempMX:模板的中心元素X坐标(/*      int tempMY:模板的中心元素Y坐标(/*      float *fpArray:指向模板数组的指针                      */
/*      float fCoef:模板系数                                  */
/*返

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     216056  2002-09-07 11:12  Sobel边缘检测\24位图.bmp

     文件       7850  2008-04-20 14:55  Sobel边缘检测\BianYuanJianCeDib.cpp

     文件        480  2008-04-20 14:54  Sobel边缘检测\BianYuanJianCeDib.h

     文件       4735  2004-08-31 16:59  Sobel边缘检测\Cdib.cpp

     文件        826  2004-03-28 12:17  Sobel边缘检测\Cdib.h

     文件      30520  2008-04-20 14:52  Sobel边缘检测\DSplit.aps

     文件       3275  2008-04-20 14:55  Sobel边缘检测\DSPLIT.CLW

     文件       4158  2003-04-01 08:51  Sobel边缘检测\Dsplit.cpp

     文件       5170  2004-03-31 15:33  Sobel边缘检测\DSplit.dsp

     文件        579  1999-01-28 11:36  Sobel边缘检测\DSPLIT.DSW

     文件       1366  2003-04-01 08:51  Sobel边缘检测\Dsplit.h

     文件    1041408  2008-05-27 10:29  Sobel边缘检测\DSPLIT.NCB

     文件      78848  2008-05-27 10:29  Sobel边缘检测\DSPLIT.OPT

     文件       3078  2008-05-27 10:28  Sobel边缘检测\DSPLIT.PLG

     文件      11995  2008-04-20 14:52  Sobel边缘检测\DSplit.rc

     文件       2008  2003-04-01 08:45  Sobel边缘检测\DSplitDoc.cpp

     文件       1505  2003-04-27 16:32  Sobel边缘检测\DSplitDoc.h

     文件       3149  2004-08-31 17:02  Sobel边缘检测\Dsplitview.cpp

     文件       1859  2003-04-01 08:27  Sobel边缘检测\Dsplitview.h

     文件       6435  2004-08-31 17:02  Sobel边缘检测\DYNSPLITTERWND.CPP

     文件       1733  1998-03-10 17:19  Sobel边缘检测\DYNSPLITTERWND.H

     文件       4052  2008-04-20 14:55  Sobel边缘检测\DynSplitView2.cpp

     文件       1779  2008-04-20 14:53  Sobel边缘检测\DynSplitView2.h

     文件       3552  2003-05-15 09:56  Sobel边缘检测\Mainfrm.cpp

     文件       1691  2003-04-02 17:00  Sobel边缘检测\MAINFRM.H

     文件       4035  1998-02-03 10:42  Sobel边缘检测\README.TXT

     目录          0  2008-05-27 10:29  Sobel边缘检测\Release

    ..A..H.       266  2002-09-02 20:49  Sobel边缘检测\RES\desktop.ini

     文件       1078  1998-02-03 11:13  Sobel边缘检测\RES\DSPLIT.ICO

     文件        398  1998-02-03 10:42  Sobel边缘检测\RES\DSPLIT.RC2

............此处省略17个文件信息

评论

共有 条评论