日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

使用Python,OpenCV查找图像中的最亮点

發布時間:2023/11/27 生活经验 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Python,OpenCV查找图像中的最亮点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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查找图像中的最亮点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。