求教:canny算子怎么用?在图像边缘提取中。。
水瓶06 2010-06-01 02:53:55 我在网上下了一个canny算子的程序,但是不太清楚怎样用,我在一个消息处理函数中这样使用,但是运行时会出错说某某内存不能为“read”。。
CImFeaExtraDoc* pDoc1 = CImFeaExtraView::GetDoc(); //获取当前活动的位图文档
ASSERT_VALID(pDoc1);
int w=pDoc1->m_pBmpInfoHeader->biWidth;
int h=pDoc1->m_pBmpInfoHeader->biHeight;
int i,j;
BYTE*pdib1;
pdib1=(BYTE*) new char[w*h]; //取24位彩色图像中某一个颜色分量,本来应是彩色转灰
for(i=0;i<h;i++) //度图像,我这里只是为了省事,先这样试一下
for(j=0;j<w;j++)
*(pdib1+i*w+j)=*(pDoc1->pdib+i*w*3+j*3);
Canny1(pdib1,CSize(pDoc1->m_pBmpInfoHeader->biWidth,pDoc1->m_pBmpInfoHeader->biHeight),0.1,0.9,0.75,pCanny);
这是canny算子函数:
void CCanny::Canny1(LPBYTE pGray, SIZE sz, double sigma, double dRatLow,
double dRatHigh, LPBYTE pResult);
请教各位,我上面那样使用为什么不对,应该怎样用呢?谢谢了,来者有分。。。