代码拉取完成,页面将自动刷新
同步操作将从 superddg123/esp8266驱动oled播放视频 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import cv2 as cv
import numpy as np
vc = cv.VideoCapture(r'H:\工坊\视频\极乐净土.mp4')#打开视频
c = 0#累计帧数
timeF = 4#隔5帧截一次图,数字越小,播放越细腻30—4 24—3
def binary_image(image):#将图像处理为二值化的程序
gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY) #把输入图像灰度化
h, w =gray.shape[:2]
m = np.reshape(gray, [1,w*h])
mean = m.sum()/(w*h)
#print("mean:",mean)
#ret, binary = cv.threshold(gray, mean, 255, cv.THRESH_BINARY)
ret, binary = cv.threshold(gray, mean, 255, cv.THRESH_OTSU)
return binary
def save_binary(dirt):#保存二值化图像的程序,用字符串传入文件位置
image = cv.imread(dirt)
image = binary_image(image)#二值化
image = cv.bitwise_not(image)#反相,根据视频内容来定需不需要反相
image = cv.resize(image,(88,64))#调整尺寸
cv.imwrite('1.pbm',image)#保存
def access_pixels(image):#相反操作
height, width, channels = image.shape
print("width:%s,height:%s,channels:%s" % (width, height, channels))
for row in range(height):
for list in range(width):
for c in range(channels):
pv = image[row, list, c]
image[row, list, c] = 255 - pv
return image
###########################################################
#此部分为循环导出视频帧
if vc.isOpened(): # 判断是否正常打开
rval, frame = vc.read()#返回一个元组,frame是帧对象
else:
rval = False
print(rval)
while rval: # 循环读取视频帧
rval, frame = vc.read()
if rval is True:
if (c % timeF == 0): # 每隔timeF帧进行存储操作
frame = binary_image(frame)#二值化
#frame = cv.bitwise_not(frame)#反相,根据视频内容来定需不需要反相
frame = cv.resize(frame,(128,64))#调整尺寸
cv.imwrite('jile/' + str(c) + '.pbm',frame)#保存
c = c + 1
#print(c)
cv.waitKey(0)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。