OpenCV图像处理基础(一)
2018-04-07 00:00
369 查看
图像处理基础,等大小图片相似度匹配
基于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"]<threshold_value: cv2.imwrite("./lab1_save_data/"+str(count)+".jpg",frame) count += 1 #记录当前帧 temp=image if flag==False: flag=True temp=image cv2.imshow("image",frame) if cv2.waitKey(10)=='q': break cv2.destroyAllWindows()
相关文章推荐
- opencv-python人眼识别图像处理基础
- 图像处理算法基础(六)---sobel算子自实现与opencv对比
- OPENCV图像处理基础(二)感兴趣区域ROI
- 图像处理之基础---基于opencv的灰度图像微分
- python-opencv图像处理基础练习1
- python-opencv图像处理基础练习2
- OPENCV图像处理基础(六)序列化储存图像
- 【AI基础】python:openCV——图像处理(1)
- OpenCV作图像处理和识别方面的编程时常用的基础语句积累!
- OPENCV图像处理基础(四)用滑动条做一个按钮
- 图像处理基础(2):自适应中值滤波器(基于OpenCV实现)
- 图像处理算法基础(五)---拉普拉斯变换自实现与opencv对比
- OPENCV图像处理基础(三)播放一个视频
- 图像处理基础(2):自适应中值滤波器(基于OpenCV实现)
- OPENCV图像处理基础(五)鼠标事件画个框
- 【AI基础】python:openCV——图像处理(2)
- OpenCV基础02(GUI+图像处理)
- OpenCV探索之路(二):图像处理的基础知识点串烧
- openCV笔记:图像处理基础
- 图像处理算法基础(三)---直方图均衡化,自研与opencv对比