Excel為數據繪制拆線圖,并將均值線疊加在圖上,以及整個過程的區域錄屏python腳本

Excel為數據繪制拆線圖,并將均值線疊加在圖上,以及整個過程的區域錄屏python腳本

  • 1.演示動畫
    • A.視頻
    • B.gif動畫
  • 2.跟蹤鼠標區域的錄屏腳本

Excel中有一組數據,希望畫出曲線,并且能把均值線也繪制在圖上,以下動畫演示了整個過程,并且提供了區域錄屏腳本,原理如下:
為節約空間,避免剪輯,只記錄有效區域【僅記錄鼠標區域且圖像變化的圖片】

1.演示動畫

A.視頻

Excel為數據繪制拆線圖,并將均值線疊加在圖上

B.gif動畫

請添加圖片描述

2.跟蹤鼠標區域的錄屏腳本

import cv2
import numpy as np
import mss
import time
import threading
import pyautogui
import datetime
from skimage.metrics import structural_similarity as ssim
from pynput import mousedef compute_ssim(imageA, imageB):"""計算兩幅圖像的結構相似性指數(SSIM)"""grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)(score, diff) = ssim(grayA, grayB, full=True)return scoredef resize_and_pad(image, size=(640, 640)):"""等比縮放并填充圖像"""h, w = image.shape[:2]scale = min(size[0] / w, size[1] / h)new_w, new_h = int(w * scale), int(h * scale)resized_image = cv2.resize(image, (new_w, new_h))# 創建黑色背景top = (size[1] - new_h) // 2bottom = size[1] - new_h - topleft = (size[0] - new_w) // 2right = size[0] - new_w - leftpadded_image = cv2.copyMakeBorder(resized_image, top, bottom, left, right, cv2.BORDER_CONSTANT, value=[0, 0, 0])return padded_imageis_mouse_pressed=False
def on_click(x, y, button, pressed):global is_mouse_pressedis_mouse_pressed = presseddef capture_screen(stop_event):layout_w=720layout_h=1280mouse_listener = mouse.Listener(on_click=on_click)mouse_listener.start()with mss.mss() as sct:# 初始化第一幀monitor = sct.monitors[1]print(monitor)frame1 = Nonescreen_width = monitor["width"]screen_height = monitor["height"]fourcc = cv2.VideoWriter_fourcc(*'XVID')out = cv2.VideoWriter('output.avi', fourcc, 3.0, (layout_w, layout_h))area=Nonewhile not stop_event.is_set():mouse_x, mouse_y = pyautogui.position()    if area:if mouse_x<area['left'] or mouse_x>area['left']+layout_w or mouse_y<area['top'] or mouse_y>area['top']+layout_h:area=Noneif area is None and is_mouse_pressed:                    # 計算截取區域,以鼠標為中心640x640,同時進行邊界檢查left = max(0, min(screen_width - layout_w, mouse_x - layout_w // 2))top = max(0, min(screen_height - layout_h, mouse_y - layout_h // 2))area = {'top': top, 'left': left, 'width': layout_w, 'height': layout_h}if area:frame2 = np.array(sct.grab(area))frame2 = cv2.cvtColor(frame2, cv2.COLOR_BGRA2BGR)# 在 frame2 上繪制一個小圓點標記鼠標位置relative_mouse_x = mouse_x - area['left']relative_mouse_y = mouse_y - area['top']cv2.circle(frame2, (relative_mouse_x, relative_mouse_y), 5, (0, 0, 255), -1)  # 紅色小圓點frame2=resize_and_pad(frame2,(layout_w,layout_h))if frame1 is None:frame1 = frame2.copy()continuescore = compute_ssim(frame1, frame2)if score<1.0:out.write(frame2)frame1 = frame2.copy()# 適量的延時,防止過高的CPU使用率time.sleep(0.1)out.release()if __name__ == '__main__':stop_event = threading.Event()# 啟動屏幕捕捉的線程capture_thread = threading.Thread(target=capture_screen, args=(stop_event,))capture_thread.start()# 等待用戶輸入'q'以停止捕捉while True:if input().strip().lower() == 'q':stop_event.set()break# 等待屏幕捕捉線程結束capture_thread.join()print("捕獲已結束并退出。")from moviepy.editor import VideoFileClip# 定義視頻文件路徑和輸出GIF文件路徑input_video_path = 'output.avi'output_gif_path = 'output.gif'# 加載視頻文件clip = VideoFileClip(input_video_path)clip = clip.subclip(3, -2)clip = clip.resize(0.4)# 將視頻剪輯轉換為GIFclip.write_gif(output_gif_path, fps=2)print(f"GIF文件保存到 {output_gif_path}")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40702.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40702.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40702.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從華為和特斯拉之爭,看智能駕駛的未來

“一旦特斯拉完全解決自動駕駛問題并量產Optimus&#xff0c;任何空頭都將被消滅&#xff0c;即使是比爾-蓋茨也不例外。”7月2日&#xff0c;馬斯克再次在社交媒體X上畫下了這樣的“大餅”。 與此同時&#xff0c;特斯拉的股價在最近的三個交易日也迎來了24%的漲幅&#xff0c…

中俄汽車產業鏈合作前景廣闊,東方經濟論壇助力雙邊合作與創新

隨著中國汽車零部件企業的競爭力和創新能力不斷增強&#xff0c;中國汽車及零部件行業在俄羅斯的市場份額和品牌影響力顯著提升&#xff0c;中俄兩國在汽車產業鏈上的合作展現出巨大的潛力和廣闊的前景。2024年5月&#xff0c;俄羅斯乘用車新車銷量達到12.8萬輛&#xff0c;同比…

7.基于SpringBoot的SSMP整合案例-表現層開發

目錄 1.基于Restfu1進行表現層接口開發 1.1創建功能類 1.2基于Restful制作表現層接口 2.接收參數 2使用Apifox測試表現層接口功能 保存接口&#xff1a; 分頁接口&#xff1a; 3.表現層一致性處理 3.1先創建一個工具類&#xff0c;用作后端返回格式統一類&#xff1a;…

SpringMVC 的工作流程和詳細解釋

Spring MVC&#xff08;Model-View-Controller&#xff09;框架是基于經典的 MVC 設計模式構建的&#xff0c;用于開發 Web 應用程序。下面是 Spring Boot MVC 的工作流程和詳細解釋&#xff1a; 1.客戶端發起請求 1.客戶端&#xff08;通常是瀏覽器&#xff09;發起 HTTP 請求…

招聘智能管理系統設計

設計一個招聘智能管理系統&#xff0c;需要從多個維度考慮&#xff0c;包括但不限于用戶界面、功能模塊、數據安全、算法模型等。以下是一個基本的設計框架&#xff1a; 1. 系統架構&#xff1a; 前端&#xff1a;提供直觀的用戶界面&#xff0c;包括應聘者和招聘者的登錄/注冊…

Python學習篇:Python基礎知識(三)

目錄 1 Python保留字 2 注釋 3 行與縮進 ?編輯4 多行語句 5 輸入和輸出 6 變量 7 數據類型 8 類型轉換 9 表達式 10 運算符 1 Python保留字 Python保留字&#xff08;也稱為關鍵字&#xff09;是Python編程語言中預定義的、具有特殊含義的標識符。這些保留字不能用作…

Android 工具腳本

工具腳本 Shell腳本 獲取Git分支名稱 def gitBranch() {def branch ""def proc "git rev-parse --abbrev-ref HEAD".execute()proc.in.eachLine { line -> branch line }proc.err.eachLine { line -> println line }proc.waitFor()branch }

生信算法9 - 正則表達式匹配氨基酸序列、核型和字符串

1. 使用正則表達式匹配指定的氨基酸序列 import re# 氨基酸序列 seq VSVLTMFRYAGWLDRLYMLVGTQLAAIIHGVALPLMMLI# 正則表達式匹配 match re.search(r[A|G]W, seq)# 打印match及匹配到開始位置和結束位置 print(match) # <re.Match object; span(10, 12), matchGW> prin…

DP學習——觀察者模式

學而時習之&#xff0c;溫故而知新。 2個角色 分為啥主題和觀察者角色。 我覺得主題就是干活的&#xff0c;打工仔&#xff0c;為觀察者干活。 一對多。一個主題&#xff0c;多個觀察者——就像一個開發人員對多個項目經理——項目經理拿小皮鞭抽呀抽呀&#xff0c;受不了。 …

代碼隨想錄算法訓練營第70天圖論9[1]

代碼隨想錄算法訓練營第70天:圖論9 ? 拓撲排序精講 卡碼網&#xff1a;117. 軟件構建(opens new window) 題目描述&#xff1a; 某個大型軟件項目的構建系統擁有 N 個文件&#xff0c;文件編號從 0 到 N - 1&#xff0c;在這些文件中&#xff0c;某些文件依賴于其他文件的…

5款軟件讓電腦更方便,更快,更好看

? 你有沒有想過&#xff0c;有些軟件能讓你的電腦用起來更方便&#xff0c;更快&#xff0c;更好看&#xff1f; 1. 屏幕動畫創作——Screen To Gif ? Screen To Gif是一款功能強大的屏幕錄制軟件&#xff0c;專注于將屏幕上的動態內容轉換為高質量的GIF動畫。它不僅支持自…

《ClipCap》論文筆記(下)

原文出處 [2111.09734] ClipCap: CLIP Prefix for Image Captioning (arxiv.org) 原文翻譯 接上篇 《ClipCap》論文筆記&#xff08;上&#xff09;-CSDN博客 4. Results Datasets.我們使用 COCO-captions [7,22]、nocaps [1] 和 Conceptual Captions [33] 數據集。我們根…

自動化設備上位機設計 一

目錄 一 設計原型 二 后臺代碼 一 設計原型 二 后臺代碼 namespace 自動化上位機設計 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}} }namespace 自動化上位機設計 {partial class Fo…

Pyqt5中如何讓label里面的圖片進行更換,避免出現黑圖

在Pyqt5的界面開發過程中&#xff0c;發現一個label的圖片怎么都添加不上&#xff0c;而且出現黑色&#xff0c;主要原因就是在進行顯示的時候需要加一行清除的代碼&#xff1a; label.clear()如果不加這行代碼&#xff0c;當里面的圖片發生變化時&#xff0c;顯示出來的就是黑…

miniprogram-to-uniapp-微信小程序轉換成uniapp項目

文章目錄 參考:miniprogram-to-uniapp使用指南第一步第二步第三步第四步【miniprogram-to-uniapp】轉換微信小程序”項目為uni-app項目(新版本工具已經支持各種小程序轉換) 參考: 小程序技能樹 uni-app基礎知識總結 miniprogram-to-uniapp使用指南 第一步 win + R 輸入…

Openwrt路由器部分ipv6公網地址無法訪問的問題

路由器是Openwrt&#xff0c;終端訪問ipv6地址經常有些能訪問&#xff0c;有些不能訪問&#xff0c;一開始以為是運營商問題&#xff0c;后面ssh到openwrt發現所有訪問都正常。 查閱資料后才知道是MTU設置問題&#xff0c;Openwrt 默認MTU是1492&#xff0c;使用IPV6應減少60個…

微信小程序遮罩層顯示

效果展示&#xff1a; wxml頁面&#xff1a; <view classmodal-mask wx:if{{showModal}}><view class"modal-container"><view classmodal-content></view><view classmodal-footer bindtap"closeImage">//這個/images/ind…

Java 基礎查漏補缺

1.深入解讀&#xff1a;JDK與JRE的區別 JDK提供了完整的Java開發工具和資源&#xff0c;包括編譯器、調試器和其他開發工具&#xff0c;滿足開發人員的各種需求。 JRE則相對更為基礎&#xff0c;它只提供了Java程序運行所需的環境&#xff0c;包含了Java虛擬機&#xff08;JVM&…

數字類型<整數、復數>

Python 中&#xff0c;數字類型 Number&#xff0c; 包括整數 int、浮點 float 數和復數 complex 三個子類型。 用來表示程序中不同的數字類型的數據。 整數 整數類型&#xff1a;用來表示整數數值&#xff0c;即沒有小數部分的數值&#xff0c;在 Python 中&#xff0c;沒有…

Nettyの網絡聊天室擴展序列化算法

1、網絡聊天室綜合案例 客戶端初始代碼&#xff1a; Slf4j public class ChatClient {public static void main(String[] args) {NioEventLoopGroup group new NioEventLoopGroup();LoggingHandler LOGGING_HANDLER new LoggingHandler(LogLevel.DEBUG);MessageCodecSharabl…