是否可以在图像中的一个点处运行filter2D(卷积)?

时间:2014-09-30 21:06:28

标签: opencv

我目前正在运行filter2D以使图像卷积内核:

cv::filter2D(source, 
             dest, 
             CV_64F, 
             kernal, 
             cv::Point(-1,-1), 
             0, 
             cv::BORDER_CONSTANT);

但是,我对使用内核卷积整个图像不感兴趣,我只想在源图像上的给定像素处运行卷积。

这可能吗?

1 个答案:

答案 0 :(得分:2)

答案很简单,来自文档enter link description here

  

注意当源图像是较大图像的一部分(ROI)时,该函数将尝试使用ROI外部的像素来形成边框

所以解决方案是:

cv::Point point(x, y); 
Mat onePixelSourceROI(source, cv::Rect( point, cv::Size(1, 1) ));

cv::filter2D(onePixelSourceROI, 
             dest, 
             CV_64F, 
             kernal, 
             cv::Point(-1,-1), 
             0, 
             cv::BORDER_CONSTANT);