OpenCV——写法问题

作为程序员,最常常遇到的情况就是自己所想的和写出来的程序运行结果大相径庭。原因有多种,可能是经验的偏差,语法错误,或者一些别的情况。所以我心血来潮的想写一些记录,方便自己查阅,也分享给你们。

ps:有的漏洞,我会说明原因,有的则没有,也希望读友能指出,感谢。

OpenCV经典操作,卷积核的编写。例如,边缘算子,锐化算子等等。

一、卷积操作

正确操作如下:

//.........(此处省略头文件,命名空间)................//
Mat src,dst;
Mat kernel = (Mat_<float/double>(n,m) << ...);//要求是float或者double
filter2D(src,dst,-1,kernel);//卷积操作

如果你不幸将kernel的类型写成uchar或者char虽然也能运行,但是你将得不到理想的效果。

二、遍历图像像素灰度

//第一种
for(int i = 0; i < img.cols; i++)
{
    for(int j = 0; j < img.rows; j++)
    {
        img.ptr<uchar>(j)[i];
    }
}

//第二种
for(int i = 0; i < img.rows; i++)
{
    for(int j = 0; j < img.cols; j++)
    {
        img.ptr<uchar>(i)[j];
    }
}

这里强烈建议使用第二种写法,外层for循环图像行,内层for循环图像列。当图像大时,两者速度差异越大。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值