怎么在c++的平台下用opencv做一个对图像的卷积?????

用下列模板[1,2,1;0,0,0;-1,-2,-1],还有[1,1,1;1,-8,1;1,1,1],麻烦高手指点~~~~~~... 用下列模板[1,2,1;0,0,0;-1,-2,-1],还有[1,1,1;1,-8,1;1,1,1],麻烦高手指点~~~~~~ 展开
 我来答
Belial2009
2011-10-12 · TA获得超过550个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:170万
展开全部
利用函数cvFilter2D
该函数的原型为:( const CvArr* src, CvArr* dst,const CvMat* kernel,CvPoint anchor=cvPoint(-1,-1));
src :输入图像.
dst:输出图像.
kernel:卷积核, 单通道浮点矩阵. 如果想要应用不同的核于不同的通道,先用 cvSplit 函数分解图像到单个色彩通道上,然后单独处理。
anchor :核的锚点表示一个被滤波的点在核内的位置。 锚点应该处于核内部。缺省值 (-1,-1) 表示锚点在核中心。
函数 cvFilter2D 对图像进行线性滤波,支持 In-place 操作。当核运算部分超出输入图像时,函数从最近邻的图像内部象素插值得到边界外面的象素值。
追问
看不是很懂,麻烦给我一个完整的代码,谢谢了~~~~~~~~高手~~~~~
追答
int main( int argc, char** argv )
{
IplImage *src = 0, *dst = 0, *dst2 = 0;
/*float k[9] = { 0, 1, 0,
1,-4, 1,
0, 1, 0}; */
float k[9] = { 1.f/16, 2.f/16, 1.f/16,
2.f/16, 4.f/16, 2.f/16,
1.f/16, 2.f/16, 1.f/16}; // 这里高斯核滤波器归一化
CvMat Km;
//cvInitMatHeader( &Km, 3, 3, CV_32FC1, k, CV_AUTOSTEP );
Km = cvMat( 3, 3, CV_32F, k );

// 0: force to gray image
src = cvLoadImage("lena.jpg", 0);
dst = cvCloneImage( src );

cvNamedWindow("src", 0);
cvShowImage("src",src);

cvNamedWindow("filtering", 0);
cvFilter2D( src, dst, &Km, cvPoint(-1,-1));
cvShowImage("filtering",dst);
cvWaitKey(0);

cvReleaseImage( &src );
cvReleaseImage( &dst );
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
希小之0k7
2011-10-11
知道答主
回答量:36
采纳率:0%
帮助的人:10.3万
展开全部
我也不知道啊啊啊啊啊啊,这都能撞到!!!!!!!!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式