OpenCV—python 显着性检测二
这里只是展示一下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 显着性检测二相关推荐
- 使用显着性检测对可见光和红外图像进行双尺度图像融合笔记
原文:https://www.sciencedirect.com/science/article/pii/S1350449515300955 摘要:本文提出一种基于显著性检测的双尺度分解的图像融合方法 ...
- opencv python tutorials_OpenCV-Python Tutorials 笔记(二)
OpenCV官方有一个面向python的文档OpenCV-Python Tutorials: 我根据此文档进行了实践学习,结合自己经验简单记录一下笔记.(续) 4.Image Processing i ...
- OpenCV—python 简单的图像质量检测
写这个主要是为了提高OCR识别率,筛选出图像质量极差的二值图返回不识别,只识别质量高一点的二值图,灰度图以及RGB图片. 统计以下:'白底方差', '图案方差', '像素波动方差','图像大小/分辨率 ...
- 【图像检测-显著性检测】基于蚁群算法优化图像视觉显着性检测附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 深度学习 + OpenCV,Python实现实时视频目标检测
选自PyimageSearch 机器之心编译 参与:路雪.李泽南 使用 OpenCV 和 Python 对实时视频流进行深度学习目标检测是非常简单的,我们只需要组合一些合适的代码,接入实时视频,随后加 ...
- 基于马尔科夫吸收概率的显着区域检测_MAP(Saliency Region Detection Based on Markov Absorption Probabilities)
详见卢湖川主页 在本文中,我们通过利用显着性检测与马尔科夫吸收概率之间的关系,提出一种新颖的自下而上的突出物体检测方法. 首先,我们通过把加权图上部分图像边界作为背景(仅使用左侧和顶侧作为背景),通过 ...
- Python基于OpenCV的指针式表盘检测系统(附带源码&技术文档)
1.背景 指针式机械表盘具有安装维护方便.结构简单.防电磁干扰等诸多优点, 目前广泛应用于工矿企业.能源及计量等部门.随着仪表数量的增加及精密仪表技术的发展,人工判读已经不能满足实际应用需求.随着计算 ...
- 如何用OpenCV在Python中实现人脸检测
选自towardsdatascience 作者:Maël Fabien 机器之心编译 参与:高璇.张倩.淑婷 本教程将介绍如何使用 OpenCV 和 Dlib 在 Python 中创建和运行人脸检测算 ...
- python可见图算法_基于自适应显着性的图像分割(源码开放)
点击上方"小白学视觉",选择"星标"公众号 重磅干货,第一时间送达 本文介绍算法的源码在github上给出 https://github.com/TimChin ...
最新文章
- Nginx 挂了怎么办?怎么实现高可用?
- Excel 自动根据Sheet名生成目录
- 除了分析引擎 2.0,神策再发一波儿新功能!
- pass information between XXX.Aspx and XXX.Aspx.cs
- 200917阶段一C++双向链表模板
- Power BI中的AI语义分析应用:《辛普森一家》
- 13. Blade 模板引擎
- 《构建之法》阅读笔记
- java继承小程序_Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)...
- wait()和sleep()区别(常见面试题)
- ylbtech-dbs:ylbtech-7,welfareSystem(福利发放系统)
- 手机打开电脑端网页_网站建设要把电脑端手机端都做好
- 计算机应用技术三级学科,三个计算机专业的区别是什么?
- C# 程序图标设置/winform 图标
- matlab ode45的使用
- 安装docker-ce报错
- STM32G0 硬件SPI+DMA+LL库,最高通讯速率32MBit/s
- 2020年中级数据库系统工程师考试笔记9—SQL语言
- Docker学习(二):安装软件
- hive导出数据的7种方式