1
我正在使用C++ openCV api,并且我想选择性地仅模糊图像中的某些像素。做这个的最好方式是什么?我试图通过子矩阵来做到这一点,但一直未能实现。OpenCV筛选部分图像
//5 is the 'radius' i'm blurring (~1/2 kernel width)
cv::Rect srcRect;
srcRect.x = x - 5;
srcRect.y = y - 5;
srcRect.width = 2*5 + 1;
srcRect.height = 2*5 + 1;
cv::Rect dstRect;
dstRect.x = x;
dstRect.y = y;
dstRect.width = 1;
dstRect.height = 1;
cv::Mat src = srcImage(srcRect);
cv::Mat dst = dstImage(dstRect);
cv::blur(src, dst, cv::Size(5,5));
通过上面的代码,没有任何变化。
当我将两个矩形设置为srcRect时,子图像都会模糊,但是整个dst会变得模糊,而不仅仅是单个像素。
任何想法?
的克隆图像似乎CV ::模糊模糊_all_像素SRC。我基本上想修改一个像素,并将其值设置为其周围所有值的平均值。有任何想法吗? – 2012-04-03 18:22:00
我认为你必须实现你自己的模糊,因为OpenCV有一个内置的边界插值方法。或者让一个单独的图像,像src一样大,按照你的定义保存src,然后复制dst的中心dstImage – Sam 2012-04-03 18:50:37
实际上,在你的代码中,cv :: blur创建一个新的dst矩阵,丢弃一个你设置了,因为它和src不一样大小。你所要做的就是将中心像素复制回dstImage。 – Sam 2012-04-03 18:52:32