成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 教你怎么用python刪除相似度高的圖片

教你怎么用python刪除相似度高的圖片

熱門標簽:電信營業(yè)廳400電話申請 江蘇房產(chǎn)電銷機器人廠家 遼寧400電話辦理多少錢 溫州旅游地圖標注 幫人做地圖標注收費算詐騙嗎 外呼不封號系統(tǒng) 荊州云電銷機器人供應(yīng)商 蘇州電銷機器人十大排行榜 悟空智電銷機器人6

1. 前言

因為輸入是視頻,切完幀之后都是連續(xù)圖片,所以我的目錄結(jié)構(gòu)如下:

其中frame_output是視頻切幀后的保存路徑,1和2文件夾分別對應(yīng)兩個是視頻切幀后的圖片。

2. 切幀代碼如下:

#encoding:utf-8
import os
import sys
import cv2

video_path = '/home/pythonfile/video/'  # 絕對路徑,video下有兩段視頻
out_frame_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'frame_output')  #frame_output是視頻切幀后的保存路徑
if not os.path.exists(out_frame_path):
    os.makedirs(out_frame_path)
print('out_frame_path', out_frame_path)
files = []
list1 = os.listdir(video_path)
print('list', list1)
for i in range(len(list1)):
    item = os.path.join(video_path, list1[i])
    files.append(item)
print('files',files)
for k,file in enumerate(files):
    frame_dir = os.path.join(out_frame_path, '%d'%(k+1))
    if not os.path.exists(frame_dir):
        os.makedirs(frame_dir)
    cap = cv2.VideoCapture(file)
    j = 0
    print('start prossing NO.%d video' % (k + 1))
    while True:
        ret, frame = cap.read()
        j += 1
        if ret:
        #每三幀保存一張
            if j % 3 == 0:
                cv2.imwrite(os.path.join(frame_dir, '%d.jpg'%j), frame)
        else:
            cap.release()
            break
    print('prossed NO.%d video'%(k+1))

3. 刪除相似度高的圖片

# coding: utf-8
import os
import cv2
# from skimage.measure import compare_ssim
# from skimage.metrics import _structural_similarity
from skimage.metrics import structural_similarity as ssim

def delete(filename1):
    os.remove(filename1)


def list_all_files(root):
    files = []
    list = os.listdir(root)
    # os.listdir()方法:返回指定文件夾包含的文件或子文件夾名字的列表。該列表順序以字母排序
    for i in range(len(list)):
        element = os.path.join(root, list[i])
        # 需要先使用python路徑拼接os.path.join()函數(shù),將os.listdir()返回的名稱拼接成文件或目錄的絕對路徑再傳入os.path.isdir()和os.path.isfile().
        if os.path.isdir(element):  # os.path.isdir()用于判斷某一對象(需提供絕對路徑)是否為目錄
            # temp_dir = os.path.split(element)[-1]
            # os.path.split分割文件名與路徑,分割為data_dir和此路徑下的文件名,[-1]表示只取data_dir下的文件名
            files.append(list_all_files(element))

        elif os.path.isfile(element):
            files.append(element)
    # print('2',files)
    return files


def ssim_compare(img_files):
    count = 0
    for currIndex, filename in enumerate(img_files):
        if not os.path.exists(img_files[currIndex]):
            print('not exist', img_files[currIndex])
            break
        img = cv2.imread(img_files[currIndex])
        img1 = cv2.imread(img_files[currIndex + 1])
        #進行結(jié)構(gòu)性相似度判斷
        # ssim_value = _structural_similarity.structural_similarity(img,img1,multichannel=True)
        ssim_value = ssim(img,img1,multichannel=True)
        if ssim_value > 0.9:
            #基數(shù)
            count += 1
            imgs_n.append(img_files[currIndex + 1])
            print('big_ssim:',img_files[currIndex], img_files[currIndex + 1], ssim_value)
        # 避免數(shù)組越界
        if currIndex+1 >= len(img_files)-1:
            break
    return count


if __name__ == '__main__':
    path = '/home/dj/pythonfile/frame_output/'

    img_path = path
    imgs_n = []
   
    all_files = list_all_files(path) #返回包含完整路徑的所有圖片名的列表
    print('1',len(all_files))
   
    for files in all_files:
        # 根據(jù)文件名排序,x.rfind('/')是從右邊尋找第一個‘/'出現(xiàn)的位置,也就是最后出現(xiàn)的位置
        # 注意sort和sorted的區(qū)別,sort作用于原列表,sorted生成新的列表,且sorted可以作用于所有可迭代對象
        files.sort(key = lambda x: int(x[x.rfind('/')+1:-4]))#路徑中包含“/”
        # print(files)
        img_files = []
        for img in files:
            if img.endswith('.jpg'):
                # 將所有圖片名都放入列表中
                img_files.append(img)
        count = ssim_compare(img_files)
        print(img[:img.rfind('/')],"路徑下刪除的圖片數(shù)量為:",count)
    for image in imgs_n:
        delete(image)

4. 導(dǎo)入skimage.measure import compare_ssim出錯的解決方法:

from skimage.measure import compare_ssim

改為

from skimage.metrics import _structural_similarity

5. structural_similarity.py的源碼

from warnings import warn
import numpy as np
from scipy.ndimage import uniform_filter, gaussian_filter

from ..util.dtype import dtype_range
from ..util.arraycrop import crop
from .._shared.utils import warn, check_shape_equality

__all__ = ['structural_similarity']


def structural_similarity(im1, im2,
                          *,
                          win_size=None, gradient=False, data_range=None,
                          multichannel=False, gaussian_weights=False,
                          full=False, **kwargs):
    """
    Compute the mean structural similarity index between two images.

    Parameters
    ----------
    im1, im2 : ndarray
        Images. Any dimensionality with same shape.
    win_size : int or None, optional
        The side-length of the sliding window used in comparison. Must be an
        odd value. If `gaussian_weights` is True, this is ignored and the
        window size will depend on `sigma`.
    gradient : bool, optional
        If True, also return the gradient with respect to im2.
    data_range : float, optional
        The data range of the input image (distance between minimum and
        maximum possible values). By default, this is estimated from the image
        data-type.
    multichannel : bool, optional
        If True, treat the last dimension of the array as channels. Similarity
        calculations are done independently for each channel then averaged.
    gaussian_weights : bool, optional
        If True, each patch has its mean and variance spatially weighted by a
        normalized Gaussian kernel of width sigma=1.5.
    full : bool, optional
        If True, also return the full structural similarity image.

    Other Parameters
    ----------------
    use_sample_covariance : bool
        If True, normalize covariances by N-1 rather than, N where N is the
        number of pixels within the sliding window.
    K1 : float
        Algorithm parameter, K1 (small constant, see [1]_).
    K2 : float
        Algorithm parameter, K2 (small constant, see [1]_).
    sigma : float
        Standard deviation for the Gaussian when `gaussian_weights` is True.

    Returns
    -------
    mssim : float
        The mean structural similarity index over the image.
    grad : ndarray
        The gradient of the structural similarity between im1 and im2 [2]_.
        This is only returned if `gradient` is set to True.
    S : ndarray
        The full SSIM image.  This is only returned if `full` is set to True.

    Notes
    -----
    To match the implementation of Wang et. al. [1]_, set `gaussian_weights`
    to True, `sigma` to 1.5, and `use_sample_covariance` to False.

    .. versionchanged:: 0.16
        This function was renamed from ``skimage.measure.compare_ssim`` to
        ``skimage.metrics.structural_similarity``.

    References
    ----------
    .. [1] Wang, Z., Bovik, A. C., Sheikh, H. R.,  Simoncelli, E. P.
       (2004). Image quality assessment: From error visibility to
       structural similarity. IEEE Transactions on Image Processing,
       13, 600-612.
       https://ece.uwaterloo.ca/~z70wang/publications/ssim.pdf,
       :DOI:`10.1109/TIP.2003.819861`

    .. [2] Avanaki, A. N. (2009). Exact global histogram specification
       optimized for structural similarity. Optical Review, 16, 613-621.
       :arxiv:`0901.0065`
       :DOI:`10.1007/s10043-009-0119-z`

    """
    check_shape_equality(im1, im2)

    if multichannel:
        # loop over channels
        args = dict(win_size=win_size,
                    gradient=gradient,
                    data_range=data_range,
                    multichannel=False,
                    gaussian_weights=gaussian_weights,
                    full=full)
        args.update(kwargs)
        nch = im1.shape[-1]
        mssim = np.empty(nch)
        if gradient:
            G = np.empty(im1.shape)
        if full:
            S = np.empty(im1.shape)
        for ch in range(nch):
            ch_result = structural_similarity(im1[..., ch],
                                              im2[..., ch], **args)
            if gradient and full:
                mssim[..., ch], G[..., ch], S[..., ch] = ch_result
            elif gradient:
                mssim[..., ch], G[..., ch] = ch_result
            elif full:
                mssim[..., ch], S[..., ch] = ch_result
            else:
                mssim[..., ch] = ch_result
        mssim = mssim.mean()
        if gradient and full:
            return mssim, G, S
        elif gradient:
            return mssim, G
        elif full:
            return mssim, S
        else:
            return mssim

    K1 = kwargs.pop('K1', 0.01)
    K2 = kwargs.pop('K2', 0.03)
    sigma = kwargs.pop('sigma', 1.5)
    if K1  0:
        raise ValueError("K1 must be positive")
    if K2  0:
        raise ValueError("K2 must be positive")
    if sigma  0:
        raise ValueError("sigma must be positive")
    use_sample_covariance = kwargs.pop('use_sample_covariance', True)

    if gaussian_weights:
        # Set to give an 11-tap filter with the default sigma of 1.5 to match
        # Wang et. al. 2004.
        truncate = 3.5

    if win_size is None:
        if gaussian_weights:
            # set win_size used by crop to match the filter size
            r = int(truncate * sigma + 0.5)  # radius as in ndimage
            win_size = 2 * r + 1
        else:
            win_size = 7   # backwards compatibility

    if np.any((np.asarray(im1.shape) - win_size)  0):
        raise ValueError(
            "win_size exceeds image extent.  If the input is a multichannel "
            "(color) image, set multichannel=True.")

    if not (win_size % 2 == 1):
        raise ValueError('Window size must be odd.')

    if data_range is None:
        if im1.dtype != im2.dtype:
            warn("Inputs have mismatched dtype.  Setting data_range based on "
                 "im1.dtype.", stacklevel=2)
        dmin, dmax = dtype_range[im1.dtype.type]
        data_range = dmax - dmin

    ndim = im1.ndim

    if gaussian_weights:
        filter_func = gaussian_filter
        filter_args = {'sigma': sigma, 'truncate': truncate}
    else:
        filter_func = uniform_filter
        filter_args = {'size': win_size}

    # ndimage filters need floating point data
    im1 = im1.astype(np.float64)
    im2 = im2.astype(np.float64)

    NP = win_size ** ndim

    # filter has already normalized by NP
    if use_sample_covariance:
        cov_norm = NP / (NP - 1)  # sample covariance
    else:
        cov_norm = 1.0  # population covariance to match Wang et. al. 2004

    # compute (weighted) means
    ux = filter_func(im1, **filter_args)
    uy = filter_func(im2, **filter_args)

    # compute (weighted) variances and covariances
    uxx = filter_func(im1 * im1, **filter_args)
    uyy = filter_func(im2 * im2, **filter_args)
    uxy = filter_func(im1 * im2, **filter_args)
    vx = cov_norm * (uxx - ux * ux)
    vy = cov_norm * (uyy - uy * uy)
    vxy = cov_norm * (uxy - ux * uy)

    R = data_range
    C1 = (K1 * R) ** 2
    C2 = (K2 * R) ** 2

    A1, A2, B1, B2 = ((2 * ux * uy + C1,
                       2 * vxy + C2,
                       ux ** 2 + uy ** 2 + C1,
                       vx + vy + C2))
    D = B1 * B2
    S = (A1 * A2) / D

    # to avoid edge effects will ignore filter radius strip around edges
    pad = (win_size - 1) // 2

    # compute (weighted) mean of ssim
    mssim = crop(S, pad).mean()

    if gradient:
        # The following is Eqs. 7-8 of Avanaki 2009.
        grad = filter_func(A1 / D, **filter_args) * im1
        grad += filter_func(-S / B2, **filter_args) * im2
        grad += filter_func((ux * (A2 - A1) - uy * (B2 - B1) * S) / D,
                            **filter_args)
        grad *= (2 / im1.size)

        if full:
            return mssim, grad, S
        else:
            return mssim, grad
    else:
        if full:
            return mssim, S
        else:
            return mssim

到此這篇關(guān)于教你怎么用python刪除相似度高的圖片的文章就介紹到這了,更多相關(guān)python刪除相似度高的圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python查找重復(fù)圖片并刪除(圖片去重)
  • Python實現(xiàn)的刪除重復(fù)文件或圖片功能示例【去重】
  • 使用python opencv對目錄下圖片進行去重的方法
  • 使用python如何刪除同一文件夾下相似的圖片
  • python刪除文件夾下相同文件和無法打開的圖片
  • python判斷圖片寬度和高度后刪除圖片的方法
  • 用python刪除文件夾中的重復(fù)圖片(圖片去重)

標簽:宿遷 黃山 三沙 濟南 景德鎮(zhèn) 臺灣 喀什 欽州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《教你怎么用python刪除相似度高的圖片》,本文關(guān)鍵詞  教你,怎么,用,python,刪除,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《教你怎么用python刪除相似度高的圖片》相關(guān)的同類信息!
  • 本頁收集關(guān)于教你怎么用python刪除相似度高的圖片的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产一级二级三级在线观看| 特黄特色欧美大片| 久久久久人妻一区精品色欧美| 欧美亚洲福利| 亚洲美女一区| 亚洲人成77777男人| 老汉av免费一区二区三区| 国产精品免费91| 97久久伊人激情网| 精品卡一卡二| 国产精品99久久久久久成人| 欧美噜噜久久久xxx| 成年女人18级毛片毛片免费| 91精品国产91久久久久福利| 久久免费99精品久久久久久| 精品国产亚洲一区二区麻豆| 国产在线一区二区三区| 亚洲中字在线| 久久久久久国产精品无码| 欧美二区在线| 国产日本欧美一区二区| 波多野一区二区| 色婷婷色综合| 蜜桃av一区| 国产suv精品一区二区33| 91九色精品| 中文字幕在线第一页| 97人妻精品视频一区| 国产一区二区三区精品在线观看| 欧美a∨亚洲欧美亚洲| 日本成人黄色网址| 韩国国内大量揄拍精品视频| 一本色道69色精品综合久久| 精品国产一区二区三区在线| 性欧美18一19内谢| 亚洲三区在线| 高清av一区二区三区| 成人交换视频| 99精品视频在线观看免费| 国产精品178页| 高清wwwwxxxx| 欧美日韩成人黄色| 在线观看网站免费入口在线观看国内| 日韩精品久久久久久久软件91| 久久午夜电影| 国产精品白浆视频免费观看| 久久久国产一区二区三区| 最近2019中文字幕一页二页| 国产一区二区三区成人欧美日韩在线观看| 中文字幕日韩有码| 成人午夜精品福利免费| 精品自在线视频| 不卡高清视频专区| jizzjizzjizz中国| 黄色免费在线网站| 国产美女视频黄a视频免费| 最全影音av资源中文字幕在线| 国内精品嫩模av私拍在线观看| 久热在线视频观看| 校园春色影音先锋| 伊人成人在线视频| 色老太综合网| 午夜精品福利在线观看| 天天伊人狠狠| 九色91蝌蚪在线| 亚洲欧美综合自拍| 国产美女永久免费| 亚洲国产精品视频在线观看| 亚洲免费婷婷| 国产一区亚洲二区三区| 热久久免费视频精品| 黄色av片三级三级三级免费看| bbw在线视频| 久久手机免费视频| 日韩av在线一区二区三区| 91成人看片片| 中文字幕一区二区三区四区欧美| 欧美专区在线观看一区| 亚洲一二三四在线观看| 成人欧美日韩| 成年人网站av| 久久久久久综合网| 日韩.com| 国模大尺度一区二区三区| 交换国产精品视频一区| 九色自拍视频| 欧美特级黄色录像| 区一区二在线观看| 大桥未久av一区二区三区中文| 欧美精品videossex88| 久久久久综合| 免费观看h片| 日本一区二区动态图| 欧美日韩精品在线观看视频| 亚洲天堂网在线视频| 精品国产美女在线| 亚洲黄色小说网站| 日韩欧美在线123| 在线观看av大片| 91免费版网站在线观看| 中文字幕第12页| 粉嫩av一区| 欧美78videosex性欧美| 久久久久久无码午夜精品直播| 国产精品九九九九| 亚洲精品乱码久久久久久久| 一本一本久久a久久综合精品| 欧洲美女和动交zoz0z| 99精品全国免费观看| 无码人妻丰满熟妇区五十路| 天堂资源在线中文精品| 永久免费精品视频网站| 欧美三级在线观看视频| 欧美午夜性春猛xxxx| 亚洲一区日韩精品中文字幕| 久久综合图片| 欧美精品一区二区三区四区| 欧美激情免费视频| 国产成人啪精品午夜在线观看| 写真福利片hd在线观看| av毛片精品| 日韩成人伦理电影在线观看| 丁香一区二区三区| 97人人爽人人澡人人精品| 黄网站色大毛片| 中文字幕在线中文字幕在线中三区| 一本久道久久久| 黄页网站在线看| 蜜桃在线一区| 亚洲a一级视频| 色一情一伦一子一伦一区| 91福利国产在线观看菠萝蜜| 免费国产成人看片在线| 欧美成人三级伦在线观看| 日韩黄色动漫| 国产精品无码久久久久成人app| 欧美性性性性性ⅹxxbbbb| 很黄的网站在线观看| 天天摸天天碰天天爽天天弄| 亚洲国产精品久久久久久6q| 影音先峰男人站| av在线天堂| 精品国产3级a| av电影不卡在线观看| 欧美日韩在线播放三区四区| 精品国产亚洲一区二区三区| 翔田千里亚洲一二三区| 蜜桃一区二区三区| 欧美日韩免费精品| 日韩欧美国产综合| 中文字幕亚洲欧美一区二区三区| 亚洲国产无线乱码在线观看| 国产精品99| 一区二区三区不卡在线视频| 岛国视频一区| 成人在线免费电影| 综合av色偷偷网| 一区二区三区四区电影| 91片在线免费观看| 国产情人综合久久777777| 风间由美中文字幕在线看视频国产欧美| 欧美日韩小视频| 亚洲色图第四色| 性欧美18~19sex高清播放| 麻豆精品一区二区av白丝在线| 国产视频一区二区三区在线播放| 国产精品欧美久久久| 国产剧情演绎av| 日韩欧美有码在线| 国产精品99无码一区二区| 欧美亚洲综合网| 色哟哟免费在线观看| 日本少妇激情舌吻| 日本一区二区三区四区高清视频| 国产成人一区二区| 成人免费看吃奶视频网站| 成人网免费视频| 久久久久久久影视| 大片在线观看网站免费收看| 亚洲欧美日韩成人在线| 中文字幕在线欧美| 日韩高清国产一区在线| 欧美视频在线免费| 精品无码国产一区二区三区av| av日韩一区| 蜜桃久久久久久久| 99精品在线免费| 亚洲综合成人av| 成人一级毛片| a天堂资源在线| 亚洲美女免费精品视频在线观看| 一起草av在线| 亚洲精品播放| 日韩成人一级片| 国产精品无圣光一区二区| 中文字幕欧美日韩一区二区| 亚洲一区二区动漫| 亚洲欧美日韩国产yyy| 圆产精品久久久久久久久久久| 蜜桃自拍偷拍| 亚洲japanese制服美女| 国产亚洲成av人片在线观看| 黄在线观看网站| 国产精品免费一区二区三区| 亚洲一级在线观看| 亚洲国产精品99久久| 欧美激情在线观看视频免费| 九九九九九国产| 91佛爷在线| 免费在线不卡av| 日韩一级片中文字幕| 国产精品久久久久久久久久小说| 91视频福利| 国产成人亚洲精品乱码在线观看| 浮力影院网站午夜| 色呦呦中文字幕| 精品中文字幕一区二区三区四区| 亚洲精品91天天久久人人| 黄网站免费在线| av亚洲产国偷v产偷v自拍| 亚洲精品一区二| 国产精品一区二区羞羞答答| 国产妇女馒头高清泬20p多| 新版中文在线官网| 亚洲精品中文在线观看| 亚洲天堂网站在线| 国产亚洲一区字幕| 日韩欧美国产综合在线一区二区三区| 日韩av日韩在线观看| 欧美激情精品久久久久久小说| 亚洲mv大片欧洲mv大片精品| 夫妻av一区二区| 真实乱偷全部视频| 91女人视频在线观看| 日韩1区2区| 在线观看黄网站免费继续| 黑人狂躁日本娇小| 91中文字幕| 青青操在线观看视频| 美女视频黄免费| 男女啪啪免费观看| 欧美性xxxx极品高清hd直播| 午夜在线免费观看视频| 亚洲天堂电影在线观看| 午夜小视频福利在线观看| 国产精品久久久久久久久免费| 黄色在线成人| 国产盗摄在线视频网站| www男人天堂| 亚洲激情 国产| 日本中文字幕在线2020| av中文字幕免费观看| 欲求不满中文字幕| 国产a∨精品一区二区三区不卡| 99热这里只有精品免费| 窝窝九色成人影院| dj大片免费在线观看| 在线亚洲欧美| av中文资源在线资源免费观看| 久久91超碰青草是什么| 717影院理论午夜伦不卡久久| 欧美日韩国产一区中文午夜| 日韩午夜激情视频| 婷婷国产成人久久精品激情| www.久久久久爱免| 中国动漫在线观看完整版免费| 亚洲午夜精品久久久| 欧美日韩视频精品一区二区| 26uuu成人网一区二区三区| 97色伦亚洲国产| 欧美日韩三级| 喜爱夜蒲2在线| 91九色美女在线视频| 久热中文字幕精品视频在线| 日本欧美在线视频免费观看| 舔着乳尖日韩一区| 欧美一区在线看| 三级黄视频在线观看| 精品人人人人| av中文字幕一区| 国产尤物一区二区| 99久久精品免费看国产交换| 欧美日韩dvd| 国产二区三区在线| 色婷婷在线视频| 日产精品一区| 亚洲女人天堂色在线7777| 国内自拍亚洲| 亚洲精品国产精品乱码不99按摩| 欧美日韩亚洲高清一区二区| 久久精品人人做人人爽97| 99国产精品久久久久老师| 精品久久福利| 日本高清不卡一区二区三区视频| 日韩欧美成人一区| 69久久久久| 久久午夜剧场| 欧美理论片在线观看| 久久免费视频播放| 日本在线视频1区| 激情六月综合| 欧美精品videossex88| 天堂在线看视频| www.久久色.com| 99精品视频在线观看| 日韩成人高清视频| 久久亚洲国产精品| 日本调教视频在线观看| 最近中文视频在线| 日本ー区在线视频| 日韩欧美国产中文字幕| 久久国产精品-国产精品| 国产在线日韩| www亚洲欧美| 日韩视频免费大全中文字幕| 97公开免费视频| 很黄很黄激情成人| 亚洲精品国产一区二区| se69色成人网wwwsex| 国产一区白浆| 97**国产露脸精品国产| 免费在线看黄网站| 2019年中文字幕| 国产亚洲女人久久久久毛片| 想看黄色一级片| 国产九色精品成人porny| 真人做人试看60分钟免费| 成人av资源在线观看|