Python,OpenCV找出图像中的最亮点

  • 1. 原理
  • 2. 优化
  • 3. 效果图
  • 4. 源码
  • 参考

这篇博客将向您展示如何使用Python和OpenCV查找图像中的最亮点,以及应用单行预处理代码——高斯模糊以改善效果。

1. 原理

查找Python和OpenCV找到图像的最亮点,主要利用cv2.minMaxLoc方法。

使用cv2.minMaxLoc 找到的实际上不是一个区域——它只是整个图像中最亮的单个像素。

cv2.minMaxLoc找到的是整个图像中单个最亮的像素。 因此使用极易受到噪音的干扰。在正常情况下不会出现明亮像素的区域(在这种情况下,是视神经中枢以外的区域),单个明亮像素会大大降低检测的结果。

相反,最好检查图像的区域而不是单个像素。因为检查区域时可以让所有区域平均平衡,而不易受到噪音影响。

2. 优化

那么,如何在不显式检查图像的每个区域的情况下模仿这种“区域”效果呢?

  • 查找图像中最亮点的敏感方法是使用cv2.minMaxLoc,称其敏感的原因是该方法极易受噪音干扰(其他区域明亮的像素),可以通过预处理步骤应用高斯模糊解决。

  • 应用高斯模糊可以对给定半径内的像素进行平均,从而丢弃单个明亮像素。使鲁棒性方法正常工作的一个重要方面是正确设置半径尺寸。

  • 合理的设置高斯模糊半径值非常的重要,正确的设置半径尺寸能很好的保证该方法的鲁棒性;

  • 如果设置半径尺寸太小,将无法找到更大,更亮的图像区域。但是如果设置尺寸过大,那么将检测到太大的区域,而错过了较小的区域,从而导致结果不及预期。

3. 效果图

原始效果 VS 高斯优化后效果图

有噪音干扰时,原始效果 VS 高斯优化后图

原始效果左图 cv2.minMaxLoc 找到的只是最亮的像素点,所以很容易受高频噪音影响。优化是应用高斯模糊;

原始效果 VS 高斯优化后图

4. 源码

# USAGE
# python bright.py --image retina.png --radius 41
# python bright.py --image images/retina-noise.png --radius 41# 导入必要的包
import numpy as np # 数值处理
import argparse # 命令行参数
import cv2 #绑定openCV# 构建命令行参数并解析
# --image 照片路径
#  --radius 整数,应用于图像的高斯模糊的半径,必须是技术
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", help = "path to the image file")
ap.add_argument("-r", "--radius", type = int,help = "radius of Gaussian blur; must be odd")
args = vars(ap.parse_args())# 加载图像,复制图像并转换为灰度图
image = cv2.imread(args["image"])
orig = image.copy()
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 查找图像中最亮点的敏感方法是使用cv2.minMaxLoc,称其敏感的原因是该方法极易受噪音干扰,可以通过预处理步骤应用高斯模糊解决。
# 寻找最小、最大像素强度所在的(x,y)
(minVal, maxVal, minLoc, maxLoc) = cv2.minMaxLoc(gray)
# 在最大像素上绘制空心蓝色圆圈
cv2.circle(image, maxLoc, 5, (255, 0, 0), 2)# 展示该方法的结果
cv2.imshow("Naive", image)# 使用cv2.minMaxLoc,如果不进行任何预处理,可能会非常容易受到噪音干扰。
# 相反,最好先对图像应用高斯模糊以去除高频噪声。这样,即使像素值非常大(同样由于噪声)也将被其邻居平均。
# 在图像上应用高斯模糊消除高频噪声,然后寻找最亮的像素
# 高斯模糊的半径取决于实际应用和要解决的问题;
gray = cv2.GaussianBlur(gray, (args["radius"], args["radius"]), 0)
(minVal, maxVal, minLoc, maxLoc) = cv2.minMaxLoc(gray)
image = orig.copy()
cv2.circle(image, maxLoc, args["radius"], (255, 0, 0), 2)# 展示效果显著提升后的方法结果
cv2.imshow("Robust", image)
cv2.waitKey(0)

参考

  • https://www.pyimagesearch.com/2014/09/29/finding-brightest-spot-image-using-python-opencv/

使用Python,OpenCV查找图像中的最亮点相关推荐

  1. Python+Opencv寻找图像中最亮的区域

    目录 一.场景需求解读 二.算法原理简介 三.算法代码实现 四.代码运行步骤 五.算法效果展示和分析 六.思维扩展 参考资料 注意事项 一.场景需求解读   在有些现实场景中,我们需要去使用算法自动的 ...

  2. python怎么绘制坐标图像_如何使用给定的坐标和python opencv在图像中绘制点?

    I have one image and one co-ordinate (X, Y). How to draw a point with this co-ordinate on the image. ...

  3. 使用Python,OpenCV寻找图像中的轮廓

    使用Python和OpenCV查找图像中的形状 1. 效果图 2. 步骤 3. 源码 参考 这篇博客将讨论使用Python和OpenCV查找图像中的形状,具体是 cv2.inRange在图像中查找形状 ...

  4. 使用Python,OpenCV,K-Means聚类查找图像中最主要的颜色

    Python,OpenCV,K-Means聚类查找图像中最主要的颜色 1. K-Means是什么? 2. 步骤 3. 效果图 4. 源代码 参考 对于肉眼来说,从一幅图中识别出主要颜色很容易.那怎么用 ...

  5. 使用Python和OpenCV检测图像中的条形码

    使用Python和OpenCV检测图像中的条形码 1. 效果图 2. 算法的步骤 3. 源码 参考 这篇博客将介绍使用计算机视觉和图像处理技术进行条形码检测的必要步骤,并演示使用Python编程语言和 ...

  6. 使用Python,OpenCV从图像中删除轮廓

    使用Python,OpenCV从图像中删除轮廓 1. 效果图 2. 步骤 3. 源码 4. 参考 1. 使用Python.OpenCV计算轮廓的中心并标记 2. 使用Python.OpenCV检测轮廓 ...

  7. OpenCV演示代码以查找图像中的轮廓(附完整代码)

    OpenCV演示代码以查找图像中的轮廓 OpenCV演示代码以查找图像中的轮廓 OpenCV演示代码以查找图像中的轮廓 #include "opencv2/imgcodecs.hpp&quo ...

  8. 热视觉2:使用Python和OpenCV从图像中测量温度

    热视觉2:使用Python和OpenCV从图像中测量温度 这篇博客将介绍学习热/中远红外视觉的基础知识,gray8 和 gray16 图像(即最常见的热成像格式)之间的差异,学习如何使用Python和 ...

  9. 使用Python,OpenCV在视频中进行实时条形码检测

    使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...

最新文章

  1. springboot自定义jar通过enable配置是否开启
  2. 手把手教你从零上手Python(付安装地址、代码)
  3. Ubuntu Linux中使用快捷键截图选定区域
  4. 洛谷 - P1433 - 吃奶酪 - dfs
  5. 爬取了京东商城上的部分手机评论数据,仅供学习使用
  6. ACE在AIX环境下编译指南
  7. csrf 攻击及防御
  8. css设置background图片的位置实现居中
  9. mongoDB的配置以及运行
  10. lisp画表盘刻度线_Lisp-Stat翻译 —— 第九章 统计绘图窗体
  11. 怎么在html中加入pjax,网页添加Pjax代码实现无刷新加载
  12. 告诉你一个真实的数字化
  13. 关于Chrome浏览器(Chrome Stable、 Chrome Canary 、Chromium)
  14. 真实可靠的Python清屏命令
  15. 转载:技术文化和惨淡命运 —— 怀念中国雅虎
  16. html egg mac os 10.7,10.7、10.8 MAC OS原版通用安装教程
  17. ENVI监督分类后背景值也被分成一种地物,解决方案和转移矩阵制作方法
  18. 浅谈聊天机器人 ChatBot 涉及到的技术点 以及词性标注和关键字提取
  19. 2048游戏英雄榜java_2048游戏攻略 2048分数排行榜详解
  20. 金融行业网络架构与技术探讨

热门文章

  1. CVPR2020论文点评: AdderNet(加法网络)
  2. 内存缓存LruCache的简单使用
  3. Android进程间通信的方式
  4. 手抖把Python2.7卸载了,导致了自己的yum不可用
  5. Android webview 加载的html 无法显示弹框
  6. Android SharedPreferences 的使用
  7. string判断是否是正常的ip格式
  8. 20145236《网络攻防》Exp4 恶意代码分析
  9. 用vue-cli脚手架搭建一个仿网易云音乐的全家桶vue项目
  10. 2022-2028年中国出版业投资分析及前景预测报告(全卷)