vb.net中边缘检测 边缘检测函数( 三 )


说得再简单一点: 当PictureBox1.DoubleClick, PictureBox4.DoubleClick, PictureBox3.DoubleClick,PictureBox2.DoubleClick当中的任何一个事件被触发时,上述这个过程的代码都将被执行
再说说参数: sender表示触发了此事件的对象,在这里就是PictureBox1/PictureBox2/PictureBox3/PictureBox4当中的某一个,利用它能知道到底是哪个对象触发了此事件,e在这里没有用处,利用不到什么,之所以有它,是因为Object/EventArgs是.Net事件的基本签名方式,它的好处在你以后对.Net深入之后能体会到.
这些参数的值都是通过被触发的事件传递过来的,可以简单的认为[事件调用了此过程并为参数赋了值]
ASP.NET 或 PHP 图象高手来1、首先不知道你所谓的卡通是什么样子的?
2、经过PS后(你提到了卡通效果)应该在饱和度、某点的颜色值都发生了变化,当然色深度也有可能变了 。
提供一个思路:将两张图片在内存中都转化为,相同色深的位图,然后灰度处理,再然后利用边缘检测法判断边缘(这里是有局限性的,需要背景比较明显,如果背景也是图像效果不好,此法的代码在网上应该可以找到) 。然后记录边缘的矩阵值,把两个做比较,设置允许差错范围(比如100边缘数据里有90个以上的值一致就认为是同一张图)
当然,在处理速度上你自己再看看二次样条、傅利叶、插值等算法吧…
哥们,你这个项目不是个小项目呀!如果真是个本科生的毕设,那个学校的老师也太牛了!如果有这个学校,我希望到那里上研!强……
补充:轮廓提取算法
/*************************************************************************
*
* 函数名称:
*ContourDIB()
*
* 参数:
*LPSTR lpDIBBits- 指向源DIB图像指针
*LONGlWidth- 源图像宽度(象素数,必须是4的倍数)
*LONGlHeight- 源图像高度(象素数)
* 返回值:
*BOOL- 运算成功返回TRUE,否则返回FALSE 。
*
* 说明:
* 该函数用于对图像进行轮廓提取运算 。
*
* 要求目标图像为只有0和255两个灰度值的灰度图像 。
************************************************************************/
BOOL WINAPI ContourDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
// 指向源图像的指针
LPSTR lpSrc;
// 指向缓存图像的指针
LPSTR lpDst;
// 指向缓存DIB图像的指针
LPSTR lpNewDIBBits;
HLOCAL hNewDIBBits;
//循环变量
long i;
long j;
unsigned char n,e,s,w,ne,se,nw,sw;
//像素值
unsigned char pixel;
// 暂时分配内存,以保存新图像
hNewDIBBits = LocalAlloc(LHND, lWidth * lHeight);
if (hNewDIBBits == NULL)
{
// 分配内存失败
return FALSE;
}
// 锁定内存
lpNewDIBBits = (char * )LocalLock(hNewDIBBits);
// 初始化新分配的内存 , 设定初始值为255
lpDst = (char *)lpNewDIBBits;
memset(lpDst, (BYTE)255, lWidth * lHeight);
for(j = 1; j lHeight-1; j++)
{
for(i = 1;i lWidth-1; i++)
{
// 指向源图像倒数第j行,第i个象素的指针
lpSrc = https://www.04ip.com/post/(char *)lpDIBBits + lWidth * j + i;
// 指向目标图像倒数第j行,第i个象素的指针
lpDst = (char *)lpNewDIBBits + lWidth * j + i;
注意要转换为unsigned char型
pixel = (unsigned char)*lpS
//取得当前指针处的像素值,rc;
//目标图像中含有0和255外的其它灰度值
//if(pixel != 255pixel != 0)
//return FALSE;
if(pixel == 0)
{
*lpDst = (unsigned char)0;
nw = (unsigned char)*(lpSrc + lWidth -1);
n= (unsigned char)*(lpSrc + lWidth );

推荐阅读