目录
在OpenCV的saliency模块中有三种显著性检测算法:
Static saliency:此类显着性检测算法依赖于图像特征和统计信息来定位图像中显著性区域。Motion saliency: 此类显着性检测算法输入为视频或一系列连续帧。运动显着性算法处理这些连续的帧,并跟踪帧中“移动”的对象。这些移动的对象被认为是显着性区域。Objectness:这类显著性检测算法计算出一个个的建议区域(proposals),这些建议区域被认为是目标可能存在的区域。OpenCV提供类4种显著性检测算法的实现:
cv2.saliency.ObjectnessBING_create()cv2.saliency.StaticSaliencySpectralResidual_create()cv2.saliency.StaticSaliencyFineGrained_create()cv2.saliency.MotionSaliencyBinWangApr2014_create()2 静态显著性检测static_saliency.py使用两种Static saliency算法:cv2.saliency.StaticSaliencySpectralResidual_create()和cv2.saliency.StaticSaliencyFineGrained_create()。使用computeSaliency()计算图片的显著性区域,返回结果是和输入图片一样大小的矩阵,每个像素位置的取值[0,1],值越大表示该像素位置越显著。最后我将返回显著性矩阵可视化出来。
3 代码 ‘’’ 2 图像凸显 ‘’’ import cv2 import matplotlib.pyplot as plt
# 1 read
img = cv2.imread('luna.png',1)
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
# 2 StaticSaliencySpectralResidual_create()
Residual = cv2.saliency.StaticSaliencySpectralResidual_create()
_,img_Residual = Residual.computeSaliency(img)
img_Residual = (img_Residual * 255).astype("uint8")
# 3 saliency.StaticSaliencyFineGrained_create()
Grained = cv2.saliency.StaticSaliencyFineGrained_create()
_,img_Grained = Grained.computeSaliency(img)
img_Grained = (img_Grained*255).astype('uint8')
thre = cv2.threshold(img_Grained, 0, 255,
cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
# 4 show
plt.subplot(221)
plt.imshow(img)
plt.title('img')
plt.subplot(222)
plt.imshow(img_Residual)
plt.title('img_Residual')
#
plt.subplot(223)
plt.imshow(img_Grained)
plt.title('img_Grained')
plt.subplot(224)
plt.imshow(thre)
plt.title('thre')
plt.show()
到此这篇关于openCV显著性检测的使用的文章就介绍到这了,更多相关openCV显著性检测内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
© 2020 asciim码
人生就是一场修行