コード例 #1
0
ファイル: c_hist_match.py プロジェクト: liutwv/img-similarity
def compare_similarity_hist_with_net_imgs(img1_url, img2_url):
    """
    比较两张网络图片的相似度
    """
    h1 = calc_bgr_hist(read_img_from_net(img1_url))
    h2 = calc_bgr_hist(read_img_from_net(img2_url))
    return compare_similar_hist(h1, h2)
コード例 #2
0
ファイル: c_hist_match.py プロジェクト: liutwv/img-similarity
def get_hist(img_url):
    """
    计算网络图片直方图数值
    Args:
        url: 图片URL地址
    Returns:
        dict类型直方图数值,转为json格式字符串返回
    """
    img = read_img_from_net(img_url)
    return calc_bgr_hist(img)
コード例 #3
0
def feature_similarity(img1_url, img2_url, type='o'):
    """
    图片解析为hash值
    Args:
        img1_url: 第一张图片URL地址
        img2_url: 第二张图片URL地址
        type: 算法类型,'o' -> ORB
    Returns:
        {
            "similarity": "xxx"
        }
    """
    img1 = read_img_from_net(img1_url, cv2.IMREAD_GRAYSCALE)
    img2 = read_img_from_net(img2_url, cv2.IMREAD_GRAYSCALE)

    similarity = 0
    if type == 'o':
        similarity = orb_similarity(img1, img2)

    print(similarity)
    return similarity
コード例 #4
0
def img_to_hashes(url, p=False, d=False, a=False, w=False):
    """
    图片解析为hash值
    Args:
        url: 图片URL地址
        p: 是否计算pHash值
        d: 是否计算dHash值
        a: 是否计算aHash值
    Returns:
        {
            "phash": "xxx",
            "dhash": "xxx",
            "ahash": "xxx",
            "whash": "xxx"
        }
    """
    data = {}

    netImg = read_img_from_net(url)

    try:
        # 分表选择90°、180°、270°
        netImgX = img_as_ubyte(transform.rotate(netImg, 90, resize=True))
        netImgY = img_as_ubyte(transform.rotate(netImg, 180, resize=True))
        netImgZ = img_as_ubyte(transform.rotate(netImg, 270, resize=True))
        # 水平翻转
        h_flip = cv2.flip(netImg, 1)
        # 垂直翻转
        v_flip = cv2.flip(netImg, 0)

        if p:
            data['p'] = {}
            data['p']['o'] = pHash(netImg)
            data['p']['x'] = pHash(netImgX)
            data['p']['y'] = pHash(netImgY)
            data['p']['z'] = pHash(netImgZ)
            data['p']['h'] = pHash(h_flip)
            data['p']['v'] = pHash(v_flip)
        if d:
            data['d'] = {}
            data['d']['o'] = dHash(netImg)
            data['d']['x'] = dHash(netImgX)
            data['d']['y'] = dHash(netImgY)
            data['d']['z'] = dHash(netImgZ)
            data['d']['h'] = pHash(h_flip)
            data['d']['v'] = pHash(v_flip)
        if a:
            data['a'] = {}
            data['a']['o'] = aHash(netImg)
            data['a']['x'] = aHash(netImgX)
            data['a']['y'] = aHash(netImgY)
            data['a']['z'] = aHash(netImgZ)
            data['a']['h'] = pHash(h_flip)
            data['a']['v'] = pHash(v_flip)
        if w:
            data['w'] = {}
            data['w']['0'] = wHash(netImg)
            data['w']['x'] = wHash(netImgX)
            data['w']['y'] = wHash(netImgY)
            data['w']['z'] = wHash(netImgZ)
            data['w']['h'] = pHash(h_flip)
            data['w']['v'] = pHash(v_flip)
    except Exception as e:
        logger.info(e)

    return data
コード例 #5
0
ファイル: his_match.py プロジェクト: liutwv/img-similarity
def three_sim(img1_url, img2_url):
    return classify_hist_with_split(read_img_from_net(img1_url),
                                    read_img_from_net(img2_url))
コード例 #6
0
ファイル: his_match.py プロジェクト: liutwv/img-similarity
def single_sim(img1_url, img2_url):
    return calculate(read_img_from_net(img1_url), read_img_from_net(img2_url))