全国服务热线:

15861139266

src ,苏州PLC培训,苏州上位机培训,苏州机器视觉培训,苏州工业机器人培训,苏州电工培训
发布时间:2023-05-05 09:25:51 点击次数:352

src 

1、传统的C风格操作符[] (指针)


for (int i = 0; i < src.rows; i++) 

{

Vec3b* data =

src.ptr<Vec3b>(i);

for (int j = 0; j < src.cols; j++) 

        {

        if (data[j][0] > 200 && data[j][2] < 50)

        data[j] = Vec3b(255, 255, 255);

        }

}



2、迭代器方法


MatIterator_<Vec3b> it, end;

for (it = src.begin<Vec3b>(), end = src.end<Vec3b>(); it != end; ++it)

if ((*it)[0] > 200 && (*it)[2] < 50) 

{

(*it)[0] = 255;

(*it)[1] = 255;

(*it)[2] = 255;

}   



3、返回引用的动态地址访问函数*


*原文:On-the-fly address calculation with reference returning


for (int i = 0; i < src.rows; ++i)

for (int j = 0; j < src.cols; ++j) 

{

Vec3b pixel = src.at<Vec3b>(i, j);

if (pixel[0] > 200 && pixel[2] < 50) 

{

src.at<Vec3b>(i, j) = Vec3b(255, 255, 255);

}

}



这三种方法中,第 1 种方法效率最高,但在使用之前,你需要先确保该图像在内存内是连续存储的。建议操作之前先调用函数 isContinuous() 来判断。


但相比之下,第 2 种方法更安全。它会帮你自动跳过内存内的不连续空间,同时也保持了很高的效率。


第 3 种方法是被设定来随机访问像素点的,你要是用它来遍历图像,那效率堪称感人。等你找到萝卜君的时候,他可能把下周的视频都做完了。


那我们就挑一种自己喜爱的方法,完成这一步操作:遍历全图,把蓝色的像素点变成白色。它有点像我们常说的“抠图”。

48.4.png

背景处理对比


(这么干净的背景在现实中是不可能存在的)


经过去除背景之后的图片,仍然有很多像椒盐一样的噪声点,我们管它叫做"椒盐噪声"。


OpenCV 的 imgproc 模块,内含滤波、形态学处理、几何变换等大量实用的图像处理函数,把它们像互相组合起来,足以应对各种场景需求。


例如,图像非线性滤波算法中的中值滤波 medianBlur,对于滤除图像中的“椒盐噪声”,效果优异。

48.5.png

cv::medianBlur(src,dst,3);


滤除椒盐噪声对比


看到了吗!


左图中的“椒盐噪声”,在右图中就消失了!


(没看到的多看几遍)


经过预处理之后的图片


干~干~净~净~


这个时候我们就可以进行物体检测啦!







1.png

立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
软件开发基础课程
上位机软件开发课
机器视觉软件开发课
专题课
联系方式
电话:15861139266
邮箱:75607082@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1

技术支持: 易动力网络