本文主要是介绍大量图片进行自适应处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先我们手里有一个视频,但是我们对视频进行图像处理的话视频很难暂停进行观察,我们可以写一个按键坚挺,但是小编这里介绍另一个办法,大致思路为,把视频进行截帧为图片的集合,再对该集合进行统一的图像处理,那如何来实现呢
PotPlayer
首先我们需要下载该软件,用来把视频变为图片集合
打开软件
接下来我们导入视频
然后我们按下快捷键 Ctrl + G,进入快速截取模式设置
在这里可以设置保存图片的位置,以及保存格式,张数选择等等,大家根据需求自行选择
完成上述操作以后我们点击开始,并且点击播放按钮,就开始帮我们开始截帧了
我们就完成了对视频进行拆解为大量的图片来,接下来我们对这些图片进行统一的图像处理
我们使用的是OTSU算法
import os
import cv2
import numpy as np
def read_path(file_pathname):for filename in os.listdir(file_pathname):print(filename)#filename = filenameimg = cv2.imread(file_pathname+'/'+filename)############ 大津法 ################gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)hist,bins = np.histogram(gray.ravel(),bins = 255,density=True)#输出0~255灰度等级分布概率#查看hist长度#print("hist:",hist.shape)#print("hist:",hist)#print("bins",bins.shape)#print("bins",bins)#创建像素级数组g = []for i in range(1,256):p = (i + i +1)/2if i == 255:p = 255g.append(p)g = np.array(g)#print("g",g.shape)#print("g:",g)#全局平均阈值 这里除pi没有意义 因为全局总pi=1M = np.sum(np.dot(hist, g))#print("MG:",M)max =0for n in range(0,256):m1 = np.sum(np.dot(hist[0:n],g[0:n]))/np.sum(hist[0:n])m2 = np.sum(np.dot(hist[n:256], g[n:256]))/np.sum(hist[n:256])score = sum(hist[0:n])*((m1 - M))**2 + sum(hist[n:256])*((m2 - M))**2if max < score:max = scorethreshold = n#print("OTSU",threshold)#调用大津算法ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)#print("threshold value %s" % ret) #cv.imshow("threshold", binary) #显示二值化图像#调用阈值实验# 取反操作:将0变为255,将255变为0 inverted_image = 255 - binary cv2.imwrite("D:\\2" + "/" + filename, inverted_image)read_path("D:\\shinei.mp4")
把上面的路径进行修改即可完成大规模的图片的图像处理了
这篇关于大量图片进行自适应处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!