博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图像处理基础(一)-OpenCV相似度匹配
阅读量:6292 次
发布时间:2019-06-22

本文共 1961 字,大约阅读时间需要 6 分钟。

  hot3.png

图像处理基础,等大小图片相似度匹配

基于RGB通道的像素点相似度匹配算法思路

def compare_by_RGB(image_1,image_2):    """    基于通道和的差      :param image_1:      :param image_2:    :return:    """    G_1 = 0    B_1 = 0    R_1 = 0    G_2 = 0    B_2 = 0    R_2 = 0    #第一个图像矩阵通道和    for x in image_1:        for y in x:            G_1 += y[0]            B_1 += y[1]            R_1 += y[2]    #第二个图像矩阵通道和    for x in image_2:        for y in x:            G_2 += y[0]            B_2 += y[1]            R_2 += y[2]    #图像矩阵各通道相似度    inc_G = 1 - math.fabs(G_1 - G_2) / G_2    inc_B = 1 - math.fabs(B_1 - B_2) / B_2    inc_R = 1 - math.fabs(R_1 - R_2) / R_2    dec = (inc_G + inc_B + inc_R) / 3    return dec

根据不相似的像素点统计

def compare_by_pixe(pic1, pic2):    """    方法二,基于像素点相似数量统计    :param pic1:    :param pic2:    :return:totlepix 像素点个数,diffcount 相似度 ,nptg,ptg    """    res={}    #获取行数列数和通道数    sp1 = pic1.shape    sp2 = pic2.shape    #获取矩阵大小    res['totlepix'] = pic1.size # pix*3 矩阵大小等于像素点数乘以3    #判断两张图片的行列数是否相同    if sp1 != sp2:        ret = "The two picture is in Different range"        return ret    DiffCount = 0    #遍历矩阵行和列    for index1 in range(sp1[0]):        for index2 in range(sp1[1]):            (b1, g1, r1) = pic1[index1, index2]            (b2, g2, r2) = pic2[index1, index2]            if (b1, g1, r1) != (b2, g2, r2):                DiffCount = DiffCount + 1    res['totlepix'] = res['totlepix'] / 3    #相似度=不同的像素点数/像素点总数    res['diffcount'] =1- DiffCount/ res['totlepix']    return res

主函数测试

if __name__=="__main__":    #相似度阈值      threshold_value=0.75    path="./lab1_data/lab1_video.mp4"    cap=cv2.VideoCapture(path)    count=0    if cap.isOpened():        #锁,用来判断是否为第一帧        flag=False        while 1:            ret,frame=cap.read()            #缩小图片            image=cv2.resize(frame,(32,32),interpolation=cv2.INTER_CUBIC)            if flag==True:                res=compare_by_pixe(image, temp)                if res["diffcount"]

转载于:https://my.oschina.net/VenusV/blog/1790674

你可能感兴趣的文章
分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)...
查看>>
Spring MVC (Java),强制页面不缓存
查看>>
javascirpt 用英文逗号替换英文分号、中英文逗号或者回车
查看>>
LeetCode --- 57. Insert Interval
查看>>
微信支付curl出错及错误码解决方案
查看>>
Codeforces 41D Pawn 简单dp
查看>>
Android,使用Json发送数据中,使用的Java转义字符 KanKan原创
查看>>
php分享二十八:mysql运行中的问题排查
查看>>
关于EventSource的精华
查看>>
.NET领域最为流行的IOC框架之一Autofac
查看>>
IntelliJ IDEA使用记录
查看>>
所谓完整的linux系统包括哪些部分呢?【转】
查看>>
Swift中出现“no such module cocoa”的错误
查看>>
开关电源过流保护-打嗝模式
查看>>
使用 jQuery Deferred 和 Promise 创建响应式应用程序
查看>>
EasyUI中那些不容易被发现的坑——EasyUI重复请求2次的问题
查看>>
nodejs教程
查看>>
NestIn VS插件 visual studio 中将同类CS文件放在一起显示
查看>>
iOS开发基础知识--碎片44
查看>>
ConcurrentHashMap原理分析
查看>>