这里只是展示一下OpenCV自带的显着性检测函数。效果都不是很好,各位可以测试一下。
需要OpenCV 3.4或更高版本

  • cv2.saliency.ObjectnessBING_create()
  • cv2.saliency.StaticSaliencySpectralResidual_create()
  • cv2.saliency.StaticSaliencyFineGrained_create()
  • cv2.saliency.MotionSaliencyBinWangApr2014_create()
静态显着性

OpenCV实现了两种用于静态显着性检测的算法。

第一种方法来自Montabone and Soto的2010年出版的《使用移动平台进行人体检测》和源自视觉显着性机制的新颖功能。
该算法最初用于检测图像和视频流中的人,但也可以推广到其他形式的显着性。
第二种方法是Hou和Zhang在其2007年CVPR论文中提出的“ 显着性检测:一种光谱残留方法”。
关于原理【请点击】

import cv2imgpath = r'C:\Users\xxx\Desktop\the_angry_birds_movie.jpg'
image = cv2.imread(imgpath)
saliency = cv2.saliency.StaticSaliencySpectralResidual_create()
(success, saliencyMap) = saliency.computeSaliency(image)
saliencyMap = (saliencyMap * 255).astype("uint8")
cv2.imshow("Image", image)
cv2.imshow("Output", saliencyMap)
cv2.waitKey(0)
cv2.destroyAllWindows()=======================================================================
imgpath = r'C:\Users\xxx\Desktop\the_angry_birds_movie.jpg'
image = cv2.imread(imgpath)
saliency = cv2.saliency.StaticSaliencyFineGrained_create()
(success, saliencyMap) = saliency.computeSaliency(image)# 对显著映射设置阈值
threshMap = cv2.threshold(saliencyMap.astype("uint8"), 0, 255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
cv2.imshow("Image", image)
cv2.imshow("Output", saliencyMap)
cv2.imshow("Thresh", threshMap)
cv2.waitKey(0)
运动显着性

OpenCV显着性检测器来自Wang和Dudek的2014年出版的一种快速自调整背景扣除算法。
https://ieeexplore.ieee.org/document/6910012/

from imutils.video import VideoStream
import imutils
import time
import cv2saliency = None
vs = VideoStream(src=0).start()
time.sleep(2.0)while True:frame = vs.read()frame = imutils.resize(frame, width=500)if saliency is None:   # 若显著性对象是None,则需要实例化saliency = cv2.saliency.MotionSaliencyBinWangApr2014_create()saliency.setImagesize(frame.shape[1], frame.shape[0])saliency.init()gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)(success, saliencyMap) = saliency.computeSaliency(gray)saliencyMap = (saliencyMap * 255).astype("uint8")cv2.imshow("Frame", frame)cv2.imshow("Map", saliencyMap)key = cv2.waitKey(1) & 0xFFif key == ord("q"):breakcv2.destroyAllWindows()
vs.stop()
客观显着性

OpenCV包含一个客观性显着性检测器-BING:由Cheng等人在300fps下进行客观性估计的二值化范数梯度。(CVPR 2014)。https://mmcheng.net/bing/
OpenCV中的其他显着性检测器在实现中完全独立的不同,BING显着性检测器需要九个单独的模型文件以用于各种窗口大小,色彩空间和数学运算。
测试命令:python objectness_saliency.py --model objectness_trained_model --image images/barcelona.jpg

import numpy as np
import cv2
import argparseap = argparse.ArgumentParser()
ap.add_argument("-m", "--model", required=True,help="path to BING objectness saliency model")
ap.add_argument("-i", "--image", required=True,help="path to input image")
ap.add_argument("-n", "--max-detections", type=int, default=10,help="maximum # of detections to examine")
args = vars(ap.parse_args())image = cv2.imread(args["image"])
saliency = cv2.saliency.ObjectnessBING_create()
saliency.setTrainingPath(args["model"])(success, saliencyMap) = saliency.computeSaliency(image)
numDetections = saliencyMap.shape[0]for i in range(0, min(numDetections, args["max_detections"])):(startX, startY, endX, endY) = saliencyMap[i].flatten()output = image.copy()color = np.random.randint(0, 255, size=(3,))color = [int(c) for c in color]cv2.rectangle(output, (startX, startY), (endX, endY), color, 2)cv2.imshow("Image", output)cv2.waitKey(0)

OpenCV—python 显着性检测二相关推荐

  1. 使用显着性检测对可见光和红外图像进行双尺度图像融合笔记

    原文:https://www.sciencedirect.com/science/article/pii/S1350449515300955 摘要:本文提出一种基于显著性检测的双尺度分解的图像融合方法 ...

  2. opencv python tutorials_OpenCV-Python Tutorials 笔记(二)

    OpenCV官方有一个面向python的文档OpenCV-Python Tutorials: 我根据此文档进行了实践学习,结合自己经验简单记录一下笔记.(续) 4.Image Processing i ...

  3. OpenCV—python 简单的图像质量检测

    写这个主要是为了提高OCR识别率,筛选出图像质量极差的二值图返回不识别,只识别质量高一点的二值图,灰度图以及RGB图片. 统计以下:'白底方差', '图案方差', '像素波动方差','图像大小/分辨率 ...

  4. 【图像检测-显著性检测】基于蚁群算法优化图像视觉显着性检测附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  5. 深度学习 + OpenCV,Python实现实时视频目标检测

    选自PyimageSearch 机器之心编译 参与:路雪.李泽南 使用 OpenCV 和 Python 对实时视频流进行深度学习目标检测是非常简单的,我们只需要组合一些合适的代码,接入实时视频,随后加 ...

  6. 基于马尔科夫吸收概率的显着区域检测_MAP(Saliency Region Detection Based on Markov Absorption Probabilities)

    详见卢湖川主页 在本文中,我们通过利用显着性检测与马尔科夫吸收概率之间的关系,提出一种新颖的自下而上的突出物体检测方法. 首先,我们通过把加权图上部分图像边界作为背景(仅使用左侧和顶侧作为背景),通过 ...

  7. Python基于OpenCV的指针式表盘检测系统(附带源码&技术文档)

    1.背景 指针式机械表盘具有安装维护方便.结构简单.防电磁干扰等诸多优点, 目前广泛应用于工矿企业.能源及计量等部门.随着仪表数量的增加及精密仪表技术的发展,人工判读已经不能满足实际应用需求.随着计算 ...

  8. 如何用OpenCV在Python中实现人脸检测

    选自towardsdatascience 作者:Maël Fabien 机器之心编译 参与:高璇.张倩.淑婷 本教程将介绍如何使用 OpenCV 和 Dlib 在 Python 中创建和运行人脸检测算 ...

  9. python可见图算法_基于自适应显着性的图像分割(源码开放)

    点击上方"小白学视觉",选择"星标"公众号 重磅干货,第一时间送达 本文介绍算法的源码在github上给出 https://github.com/TimChin ...

最新文章

  1. Nginx 挂了怎么办?怎么实现高可用?
  2. Excel 自动根据Sheet名生成目录
  3. 除了分析引擎 2.0,神策再发一波儿新功能!
  4. pass information between XXX.Aspx and XXX.Aspx.cs
  5. 200917阶段一C++双向链表模板
  6. Power BI中的AI语义分析应用:《辛普森一家》
  7. 13. Blade 模板引擎
  8. 《构建之法》阅读笔记
  9. java继承小程序_Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)...
  10. wait()和sleep()区别(常见面试题)
  11. ylbtech-dbs:ylbtech-7,welfareSystem(福利发放系统)
  12. 手机打开电脑端网页_网站建设要把电脑端手机端都做好
  13. 计算机应用技术三级学科,三个计算机专业的区别是什么?
  14. C# 程序图标设置/winform 图标
  15. matlab ode45的使用
  16. 安装docker-ce报错
  17. STM32G0 硬件SPI+DMA+LL库,最高通讯速率32MBit/s
  18. 2020年中级数据库系统工程师考试笔记9—SQL语言
  19. Docker学习(二):安装软件
  20. hive导出数据的7种方式

热门文章

  1. 欧陆风云3实用修改代码
  2. 任何一个合数可由几个质数相乘得到
  3. 游戏美术中最常见的故障及其解决方案(1)
  4. 我爱自然语言处理网文章汇总
  5. PyTorch 笔记Ⅵ——Titanic 及 breast_cancer 分类应用
  6. Python基础教程第七章学习笔记——更加抽象
  7. 《那一世》——仓央嘉措
  8. python中形参只在函数内部有效_【Python】函数
  9. 2021了还有必要发外链吗-带你深度解析外链对SEO的帮助
  10. 【学习笔记】C语言程序设计入门(一)