openCV在图片上取两点,将这这两点形成的矩形做模糊处理,怎么做? 30

本人刚刚开始用opencv,还不熟悉,我现在要做的内容如下:在一张图片上随机点上两点,这两点作为矩形的对点,所形成的矩形做模糊处理(像素增大变成马赛克)。通过键盘操作改变... 本人刚刚开始用opencv,还不熟悉,我现在要做的内容如下:
在一张图片上随机点上两点,这两点作为矩形的对点,所形成的矩形做模糊处理(像素增大变成马赛克)。
通过键盘操作改变像素大小,比如,点击 i 增大像素,点击 d 减小像素。
可以去除模糊效果,比如,点击R 移除模糊效果。
将最后修改过的图片存到本地文件夹。
这道题主要就是第一条,我已经做了一些,这事关于鼠标点击的方法,还没写完:
Point p1,p2;
bool flag = false;
int mark = 1;
Mat img_resize;
int count = 0;
void mousefunction(int event, int x, int y, int flags, void* userdata)
{
if (event == EVENT_LBUTTONDOWN){
if (flag){
printf("left click on (%d, %d)\n", x, y);
p2 = Point(x, y);
flag = false;
mark = 2;
++count;

}
else{
printf("left click on (%d, %d)\n", x, y);
p1 = Point(x, y);
flag = true;
mark = 1;
++count;
}
if (mark == 2){
for (int j = p1.y; j < p2.y; j++)
{
for (int i = p1.x; i < p2.x; i++)
{
img_resize.ptr<uchar>(y + j)[3 * (x + i)] = img_resize.ptr<uchar>(y + j)[3 * (x + i)] * 2;
img_resize.ptr<uchar>(y + j)[3 * (x + i) + 1] = img_resize.ptr<uchar>(y + j)[3 * (x + i) + 1] * 2;
img_resize.ptr<uchar>(y + j)[3 * (x + i) + 2] = img_resize.ptr<uchar>(y + j)[3 * (x + i) + 2] * 2;
}
}
}

}
这代码只是个参考,还没做模糊处理,希望高手给出代码参考!~
展开
 我来答
haiyangfenghuo
2014-09-21 · TA获得超过2439个赞
知道大有可为答主
回答量:2388
采纳率:0%
帮助的人:806万
展开全部
这个可以这么考虑,opencv有降采样的函数,可以用降采样实现图像的放大和缩小,本身就实现了放大缩小,不用你自己再去实现,另外cvResize函数可以实现更改图像大小,请参考。
追问
并不是放大和缩小,模糊的意思是马赛克,通过按键,改变像素大小
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式