当前位置: 首页 > news >正文

worldpress做网站推广和竞价代运营

worldpress做网站,推广和竞价代运营,做网页链接,做网站平台成本Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果 一、简单介绍 二、简单视频放大抖动效果实现原理 三、简单视频放大…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果

目录

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果

一、简单介绍

二、简单视频放大抖动效果实现原理

三、简单视频放大抖动效果案例实现简单步骤

四、注意事项

五、其他


一、简单介绍

Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python是一种解释型脚本语言,可以应用于以下领域: Web 和 Internet开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发、网络爬虫。

这里使用 Python  基于 OpenCV 进行视觉图像处理,......

二、简单视频放大抖动效果实现原理

简单的视频抖动放大效果是对视频中的每一帧进行处理,使其在特定的条件下进行放大。通常情况下,这种效果会在视频的开始阶段或者特定的时间间隔内对帧进行放大处理,以达到抖动放大的效果。具体来说,这种效果通常包括以下几个步骤:

  1. 读取视频:首先,程序会读取输入的视频文件。

  2. 逐帧处理:接着,程序会对视频中的每一帧进行处理。在简单的视频抖动放大效果中,通常会根据特定的条件来判断是否对当前帧进行放大处理。

  3. 放大处理:当满足放大条件时,对当前帧进行放大处理。一种常见的放大方式是通过裁剪图像中心部分,然后将其放大至原始图像大小。

  4. 写入输出视频:最后,处理后的帧将被写入到输出视频文件中,从而形成一个具有抖动放大效果的视频。

涉及的关键函数包括:

  • cv2.VideoCapture()

    • 这个函数用于从视频文件中读取视频流。
    • video_shake() 函数中使用,用于打开视频文件并创建一个 VideoCapture 对象。
  • cap.get()

    • 这个方法用于获取视频的属性,如帧率、宽度、高度等。
    • video_shake() 函数中使用,用于获取视频的帧率、宽度和高度。
  • cv2.VideoWriter()

    • 这个函数用于创建一个用于保存视频的 VideoWriter 对象。
    • video_shake() 函数中使用,用于创建一个 VideoWriter 对象,用于写入输出视频文件。
  • cap.read()

    • 这个方法用于逐帧读取视频。
    • video_shake() 函数中使用,用于逐帧读取视频并对每一帧进行处理。
  • cv2.VideoWriter.write()

    • 这个方法用于将帧写入到视频文件中。
    • video_shake() 函数中使用,用于将处理后的帧写入到输出视频文件中。

三、简单视频放大抖动效果案例实现简单步骤

1、编写代码

2、运行效果

3、具体代码

"""
简单视频抖动放大效果apply_zoom() 函数:这个函数接受一个帧图像和放大因子作为参数,然后将图像放大。首先,计算了放大区域的左上角和右下角坐标,然后从原图中截取出放大区域,最后将截取的图像进行放大并返回。video_shake() 函数:这个函数接受视频文件的路径和输出视频文件的路径作为参数。首先,打开视频文件并获取视频信息,包括帧率、宽度和高度。然后,创建一个 VideoWriter 对象,用于写入输出视频文件。在一个循环中,逐帧读取视频,检查帧索引是否为前 5 帧或者 10 的倍数帧,如果是,则应用放大效果。最后,将处理后的帧写入输出视频文件,释放资源。
"""import cv2def apply_zoom(frame, factor):"""放大指定帧图:param frame::param factor: 这个函数接受一个帧图像和放大因子作为参数,然后将图像放大。:return:"""height, width, _ = frame.shapeh1 = int(height * 0.1)h2 = int(height * 0.9)w1 = int(width * 0.1)w2 = int(width * 0.9)zoomed_frame = frame[h1:h2, w1:w2]return cv2.resize(zoomed_frame, (width, height))def video_shake(video_path, output_path):"""视频放大抖动:param video_path::param output_path::return:"""# 打开视频文件cap = cv2.VideoCapture(video_path)# 获取视频信息fps = cap.get(cv2.CAP_PROP_FPS)width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 定义视频编码器fourcc = cv2.VideoWriter_fourcc(*'mp4v')# 创建 VideoWriter 对象out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))# 视频索引frame_index = 0while cap.isOpened():ret, frame = cap.read()if not ret:break# 检查帧索引是否为 10 的倍数或前 5 帧if frame_index < 5 or frame_index % 10 == 0:frame = apply_zoom(frame, factor=2)out.write(frame)frame_index += 1cap.release()out.release()cv2.destroyAllWindows()def main():video_path = "Videos/CatRun.mp4"output_path = "Videos/VideoShake.mp4"video_shake(video_path, output_path)if __name__ == "__main__":main()

四、注意事项

  • 视频文件路径

    • 确保 video_path 变量中指定的视频文件路径是正确的,包括文件名和文件格式。如果视频文件不存在或路径错误,程序将无法打开视频文件。
  • 输出视频文件路径

    • 确保 output_path 变量中指定的输出视频文件路径是正确的,并且具有合适的文件名和文件格式。如果输出路径无法访问或已存在同名文件,程序将无法写入输出视频文件。
  • 视频处理参数

    • apply_zoom() 函数中,可以调整放大效果的参数,例如放大区域的比例因子。可以根据实际需求调整这些参数,以获得更好的效果。
  • 帧索引判断

    • video_shake() 函数中,使用了帧索引来判断是否对当前帧应用放大效果。确保你理解了条件判断的逻辑,并且根据需求调整条件判断的条件。
  • 资源释放

    • 在程序执行结束时,确保释放了视频文件对象和 VideoWriter 对象的资源,并关闭了所有的 OpenCV 窗口,以避免资源泄露和内存占用。

五、其他

1、生成一个黑白棋盘图

import cv2
import numpy as np# 设置棋盘格尺寸和方格数
board_size = (7, 7)
square_size = 100  # 每个棋盘格的边长,单位为像素# 计算棋盘格图像大小
board_width = board_size[1] * square_size
board_height = board_size[0] * square_size# 创建棋盘格图像
chessboard_image = np.zeros((board_height, board_width, 4), dtype=np.uint8)# 绘制棋盘格
for i in range(0, board_height, square_size):for j in range(0, board_width, square_size):color = 255 if (i // square_size + j // square_size) % 2 == 0 else 0chessboard_image[i:i+square_size, j:j+square_size] = (color, color, color, 255)# 保存为 PNG 图片
cv2.imwrite('chessboard.png', chessboard_image)# 显示图像
cv2.imshow('Chessboard', chessboard_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2、图片保存视频

import cv2# 读取棋盘图片
chessboard_image = cv2.imread('Images/chessboard.png')# 检查图片是否读取成功
if chessboard_image is None:print("Error: Unable to read chessboard image.")exit()# 设置视频帧率和尺寸
fps = 30
enlarged_height, enlarged_width = chessboard_image.shape[0] * 2, chessboard_image.shape[1] * 2# 创建 VideoWriter 对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video_writer = cv2.VideoWriter('calibration_video.mp4', fourcc, fps, (enlarged_width, enlarged_height))# 计算帧数
frame_count = 5 * fps# 循环生成放大颜色分离的棋盘格图像,并写入视频
for _ in range(frame_count):# 放大棋盘图片enlarged_chessboard = cv2.resize(chessboard_image, (enlarged_width, enlarged_height), interpolation=cv2.INTER_LINEAR)# 颜色分离blue_channel, green_channel, red_channel = cv2.split(enlarged_chessboard)# 对每个通道进行错开叠加显示merged_frame = cv2.merge((red_channel, green_channel, blue_channel))video_writer.write(merged_frame)# 释放资源
video_writer.release()
cv2.destroyAllWindows()

http://www.ds6.com.cn/news/120495.html

相关文章:

  • 网站建设公司电话linux网站入口
  • 目前个人网站做地最好是哪几家如何联系百度推广
  • 重庆皇华建设集团有限公司网站如何在百度发布文章
  • 建设公司网站的步骤洛阳市网站建设
  • 做网站被骗预付款怎么办成都网站建设团队
  • 酷家乐装修设计软件app下载优化公司网站
  • 做网站很赚钱网站seo是啥
  • 小企业建站系统天桥区seo全网宣传
  • 如果做vr参观网站百度最贵关键词排名
  • 做化工外贸需要那些网站搜索引擎营销的简称
  • 济南国画网站济南网站建设公司站内关键词自然排名优化
  • 北京做网站的大公司广州新闻发布
  • 网上做效果图网站360优化大师官方最新
  • 品牌网站设计提案怎么样把广告做在百度上
  • 中国正式宣布出兵福州seo排名优化公司
  • wordpress添加导航栏seo导航
  • 用什么软件做网站好处想要网站导航正式推广
  • 网站分成比例系统怎么做网站推广沈阳
  • 做电销哪些网站可以找到客户seo研究中心晴天
  • 石家庄市网站建设培训班劳动局免费培训项目
  • 门户网站有哪些关键词优化排名用哪个软件比较好
  • 外国做动漫图片的网站叫什么网络营销策略包括哪几大策略
  • 政府的网站用什么系统做的如何做一个自己的电商平台
  • 做301跳转会影响之前网站排名吗品牌策划方案模板
  • 自己搭建服务器网站开发软件it培训学校哪家好
  • 做地方行业门户网站需要什么资格高质量外链
  • 怎么免费把自己在dreamweaver做的网站放到网上去营销推广是干什么的
  • 做网站霸屏公司销售好做吗地推推广方案
  • 企业网站城市分站系统沈阳今天刚刚发生的新闻
  • 做自媒体网站青岛网络推广公司哪家好