技术心得:图像处理——(源)腐蚀(eroded)、膨胀(dilated)函数编程实现

简介: 技术心得:图像处理——(源)腐蚀(eroded)、膨胀(dilated)函数编程实现

"

1 #include

2 #include

3 #include

4 #include

5 #include

6 using namespace cv;

7 using namespace std;

8

9 //自定义膨胀函数

10 void dilated_my( Mat img1,Mat bin,int k)

11 {

12 k=(k-1)/2;

13 for (int i = 0; i < bin.rows; ++i){

14 for (int j = 0; j < bin.cols; ++j){

15

16 uchar maxV = 0;

17 //遍历周围最大像素值

18 for (int yi = i-k; yi <= i+k; yi++) {

19 for (int xi = j-k; xi <= j+k; xi++) {

20 if (xi[span style=""color: rgba(128, 0, 128, 1)"">0||xi>= bin.cols|| yi[span style=""color: rgba(128, 0, 128, 1)"">0 || yi >= bin.rows){

21 continue;

22 }

23

24 maxV = (std::max)(maxV, bin.at(yi, xi));

25 }

26 }

27 img1.at(i, j) = maxV;

28 }

29 }

30 }

31 //自定义腐蚀函数

32 void eroded_my( Mat img1,Mat bin ,int k)

33 {

34 k=(k-1)/2;

35 for (int i = 0; i < bin.rows; ++i){

36 for (int j = 0; j < bin.cols; ++j){

37 uchar minV = 255;

38

39 //遍历周围最小像素值

40 for (int yi = i-k; yi <= i+k; yi++) {

41 for (int xi = j-k; xi <= j+k; xi++) { //代码效果参考:https://v.youku.com/v_show/id_XNjQwNjYzNDk0NA==.html

42 if (xi[span style=""color: rgba(128, 0, 128, 1)"">0||xi>= bin.cols|| yi[span style=""color: rgba(128, 0, 128, 1)"">0 || yi >= bin.rows){

43 continue;

44 }

45 minV = (std::min)(minV, bin.at(yi, xi));

46

47 }

48 }

49 img1.at(i, j) = minV;

50 }

51 }

52 }

53 int main()

54 {

55 //从文件中读取成灰度图像

56

57

58 Mat img1 = imread("""",0);

59 imshow(""gray"",img1);

60 Mat dst1;

61 Mat dst2;

62 Mat bin;

63 threshold(img1,bin,200,255,CV_THRESH_BINARY);

64

65 //opencv函数法

66 Mat structElement1 = getStructuringElement(MORPH_RECT, Size(5,5));

67 dilate(bin,dst1,structElement1//代码效果参考:https://v.youku.com/v_show/id_XNjQwNjY0NTcyMA==.html

);

68 imshow(""opencv_dilated"", dst1);

69 erode(bin,dst2,structElement1);

70 imshow(""opencv_eroded"", dst2);

71

72 //自定义方法

73 dilated_my(img1,bin,5);

74 imshow(""my_dilated"",img1);

75 eroded_my(img1,bin,5);

76 imshow(""my_eroded"",img1);

77

78 waitKey(0);

79 return 0;

80

81 }

原图:

opencv函数法:

自己函数:

萍水相逢逢萍水,浮萍之水水浮萍!


"
image.png
相关文章
|
Android开发
Android JNI与CAN通信遇到的问题总结
Android JNI与CAN通信遇到的问题总结
577 1
|
10月前
|
存储 弹性计算 安全
阿里云服务器ECS详解:云服务器是什么,云服务器优势和应用场景及价格参考
云服务器ECS是阿里云众多云产品中,最受用户关注的产品,阿里云服务器提供多样化的计算能力,支持x86、Arm架构,涵盖CPU、GPU等多种服务器类型,满足各种用户需求。本文为大家详细介绍阿里云服务器是什么?云服务器的优势和应用场景,以及最新价格情况,以供大家参考。
|
存储 缓存 监控
深入JVM:解析OOM的三大场景,原因及实战解决方案
深入JVM:解析OOM的三大场景,原因及实战解决方案
|
数据采集 物联网 数据挖掘
API接口的应用
API接口在现代技术中至关重要,它使不同软件、设备间能相互通信和数据共享。在社交网络中,如Facebook及Twitter的API让开发者能够构建交互式应用;移动应用则依赖API与服务器通信,实现天气查询、地图定位等功能;云计算平台如AWS通过API提供了资源管理和配置服务;物联网设备使用API实现数据交换;视频游戏开发商利用各类平台API发布游戏。此外,API爬虫数据接口技术通过爬虫抽取并输出数据,被广泛应用于获取商业、金融、医疗等领域的大数据,以支持数据分析、策略制定及业务流程优化,极大地提高了数据收集与处理的效率和准确性。
|
机器学习/深度学习 编解码 算法
【YOLOv8改进 - 特征融合NECK】SDI:多层次特征融合模块,替换contact操作
YOLOv8专栏探讨了该目标检测算法的创新改进,包括新机制和实战案例。文章介绍了U-Net v2,一种用于医学图像分割的高效U-Net变体,它通过SDI模块融合语义和细节信息,提升分割准确性。SDI模块结合空间和通道注意力,经通道减缩、尺寸调整和平滑后,用哈达玛积融合特征。提供的核心代码展示了SDI模块的实现。更多详情和论文、代码链接见原文。
|
Java Maven
Maven的dependency中无版本号的可能情况
Maven的dependency中无版本号的可能情况
1000 0
|
算法 前端开发 C++
IOCP编程小结(中)
上一篇主要谈了一些基本理念,本篇将谈谈我个人总结的一些IOCP编程技巧。   网络游戏前端服务器的需求和设计   首先介绍一下这个服务器的技术背景。在分布式网络游戏服务器中,前端连接服务器是一种很常见的设计。
1263 0
|
1天前
|
人工智能 运维 安全
|
3天前
|
SpringCloudAlibaba 负载均衡 Dubbo
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
本文对比分析了SpringCloudAlibaba框架下Feign与Dubbo的服务调用性能及差异。Feign基于HTTP协议,使用简单,适合轻量级微服务架构;Dubbo采用RPC通信,性能更优,支持丰富的服务治理功能。通过实际测试,Dubbo在调用性能、负载均衡和服务发现方面表现更出色。两者各有适用场景,可根据项目需求灵活选择。
371 123
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?

热门文章

最新文章