实现区域截图功能

article/2025/9/15 11:47:38

利用QQ或微信自带的截图功能实现区域截图。
在腾讯安装目录下找到PrScrn.dll,并将它放在需要的位置,
将D:/PrScrn.dll修改为你的目录。

如果在maya里面直接使用该代码

import os,subprocess
from PySide2.QtWidgets import QApplication
clipboard = QApplication.clipboard()
if os.name == 'nt':startupinfo = subprocess.STARTUPINFO()startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOWstartupinfo.wShowWindow = subprocess.SW_HIDE
else:startupinfo = None
grab = subprocess.Popen('rundll32.exe D:/PrScrn.dll PrScrn', startupinfo=startupinfo)
grab.wait() 
dataImage = clipboard.pixmap()
dataImage.save('D:\LenovoC\maya2017\Maya Icon\Grab.png')

这里写图片描述
如果在maya外部,使用此代码

    import os,subprocess,sysfrom PySide.QtGui import QApplicationpp = QApplication(sys.argv)clipboard = QApplication.clipboard()if os.name == 'nt':startupinfo = subprocess.STARTUPINFO()startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOWstartupinfo.wShowWindow = subprocess.SW_HIDEelse:startupinfo = Nonegrab = subprocess.Popen('rundll32.exe D:/PrScrn.dll PrScrn', startupinfo=startupinfo)grab.wait()dataImage = clipboard.pixmap()dataImage.save('D:/Grab1.jpg')

也可以用SnapShot.exe和CameraDll.dll,在腾讯软件安装目录下找到 SnapShot.exe和CameraDll.dll,并拷贝至同一目录,并将代码拷到一 起,运行即可截图。也可以直接运行exe文件进行截图。

import os,subprocess,sys
from PySide.QtGui import QApplication
pp = QApplication(sys.argv)
clipboard = QApplication.clipboard()if os.name == 'nt':startupinfo = subprocess.STARTUPINFO()startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOWstartupinfo.wShowWindow = subprocess.SW_HIDE
else:startupinfo = None
grab = subprocess.Popen('SnapShot.exe CameraDll.dll CameraDll', startupinfo=startupinfo)
grab.wait()dataImage = clipboard.pixmap()
dataImage.save('D:/Grab1.jpg')

这里写图片描述
下面写了一个用pyqt4写的截图工具,如果大家不想要使用腾讯的东西,可以研究一下。

import sys
try:from PyQt4 import QtGui,QtCore
except ImportError:raise ImportError("You need PyQt installed for using this tool.")sys.exit()class Rubb(QtGui.QLabel):def __init__(self,name=None,parent=None):super(Rubb,self).__init__(parent)self.name = nameself.createWidgets()# install event filterself.fullScreenLabel.installEventFilter(self)  def eventFilter(self,widget,event):       if widget != self.fullScreenLabel:return QtGui.QLabel.eventFilter(self, widget, event)          if event.type() == QtCore.QEvent.MouseButtonPress:if event.button() == QtCore.Qt.RightButton:#close full screen winself.fullScreenLabel.close()if event.button() == QtCore.Qt.LeftButton:self.leftMousePress = Trueself.origin = event.pos()if not self.rubberBand:self.rubberBand = QtGui.QRubberBand(QtGui.QRubberBand.Rectangle,self.fullScreenLabel)self.rubberBand.setGeometry(QtCore.QRect(self.origin,QtCore.QSize()))self.rubberBand.show()return Trueif event.type() == QtCore.QEvent.MouseMove:if self.leftMousePress:if self.rubberBand:self.rubberBand.setGeometry(QtCore.QRect(self.origin,event.pos()).normalized())return Trueif event.type() == QtCore.QEvent.MouseButtonRelease:self.leftMousePress = Falseif self.rubberBand:self.termination = event.pos()self.rect = QtCore.QRect(self.origin,self.termination)self.screenshot = self.fullScreenPixmap.copy(self.rect.x(),self.rect.y(),self.rect.width(),self.rect.height())# saveprint self.nameself.screenshot.save(self.name+'.png', 'png')# closeself.fullScreenLabel.close()return True                                return Falsedef createWidgets(self):self.fullScreenLabel = QtGui.QLabel()self.fullScreenLabel.setCursor(QtCore.Qt.CrossCursor)self.fullScreenLabel.setAutoFillBackground(True)self.shotScreenLabel = QtGui.QLabel()self.rubberBand = QtGui.QRubberBand(QtGui.QRubberBand.Rectangle,self.fullScreenLabel)  pal = QtGui.QPalette()pal.setBrush(QtGui.QPalette.Highlight,QtGui.QBrush(QtCore.Qt.blue))   self.rubberBand.setPalette(pal)self.leftMousePress = False      self.fullScreenPixmap = QtGui.QPixmap.grabWindow(QtGui.QApplication.desktop().winId())self.fullScreenLabel.setPixmap(self.fullScreenPixmap)self.fullScreenLabel.showFullScreen()if __name__ == "__main__":app = QtGui.QApplication(sys.argv)main=Rubb(r'C:\Users\Administrator\Desktop\mayaApi\screen')main.fullScreenLabel.show()app.exec_()

最后,送上一个可以在图片上截图的小代码,今天就到这里了。

#-*- coding:utf-8 -*-import cv2
import os,sys
global img
global point1, point2reload(sys)
sys.setdefaultencoding("utf-8")def on_mouse(event, x, y, flags, param):global img, point1, point2img2 = img.copy()if event == cv2.EVENT_LBUTTONDOWN:         point1 = (x,y)cv2.circle(img2, point1, 10, (0,255,0), 5)cv2.imshow('image', img2)elif event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON):               #按住左键拖曳cv2.rectangle(img2, point1, (x,y), (255,0,0), 5)cv2.imshow('image', img2)elif event == cv2.EVENT_LBUTTONUP:         point2 = (x,y)cv2.rectangle(img2, point1, point2, (0,0,255), 5) cv2.imshow('image', img2)min_x = min(point1[0],point2[0])     min_y = min(point1[1],point2[1])width = abs(point1[0] - point2[0])height = abs(point1[1] -point2[1])cut_img = img[min_y:min_y+height, min_x:min_x+width]name='myTu_'path= os.path.abspath(os.path.join(os.getcwd()))#path=path.decode('utf-8')files =os.listdir(path)t=0for i in files:if "myTu"  in i:t=t+1cv2.imwrite(name+str(t)+".jpg", cut_img)def main():global imgimg = cv2.imread('1.jpg')cv2.namedWindow('image')cv2.setMouseCallback('image', on_mouse)cv2.imshow('image', img)cv2.waitKey(0)if __name__ == '__main__':main()

http://chatgpt.dhexx.cn/article/2lOJEgvY.shtml

相关文章

小米手机怎么截屏?小米手机区域截屏

小米手机怎么截屏?手机的截屏其实都是差不多的,基本上都是三指向下滑动而达到截屏效果的,但基本都是全屏截图。小米手机区域截屏怎么做?如果想要做到任意位置的那种区域块截屏的话,该怎么做?下面就来看看吧…

浏览器截图方法(长截图、node截图、指定区域截图)

1.打开需要截屏的页面,按键盘上的F2(或者CtrlShiftI)打开浏览器控制台 2.CtrlshiftP进入搜索框,输入“screen”: 这里有四种截图模式,点击需要的截图方式即可截取图片。

Windows关闭指定端口命令

假设要关闭端口号为3003,使用下面的命令,查出此端口号对应的PID netstat -ano|findstr 3003 上图红框内的 22876 就是3003端口对应的PID,再使用下面的命令就可以关闭这个端口了 taskkill /PID 22876 /F

Linux关闭端口

netstat -anp | grep xxx //查看端口是否被占用kill -9 10762 //即可关闭端口

linux开放端口和关闭端口

centos6: 关闭防火墙:service iptables stop 开启防火墙:service iptables start 防火墙状态:service iptables status 永久关闭:chkconfig iptables off 永久开启:chkconfig iptables on 方法一(命令): 1. 开放端口命令: /sbin/iptables -I INPUT…

[NLP自然语言处理]谷歌BERT模型深度解析

BERT模型代码已经发布,可以在我的github: NLP-BERT--Python3.6-pytorch 中下载,请记得start哦 目录 一、前言 二、如何理解BERT模型 三、BERT模型解析 论文的核心:详解BERT模型架构 关键创新:预训练任务 实验结果 四、BERT模型…

深度学习:BERT模型

BERT模型 BERT出自https://arxiv.org/pdf/1810.04805.pdf的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder。作为一个Word2Vec的替代者,其在NLP领域的11个方向大幅刷新了精度,可以说是近年来自残…

BERT模型系列大全解读

前言 本文讲解的BERT系列模型主要是自编码语言模型-AE LM(AutoEncoder Language Model):通过在输入X中随机掩码(mask)一部分单词,然后预训练的主要任务之一就是根据上下文单词来预测这些单词,从…

BERT模型的深度解读

一、BERT整体概要 Bert由两部分组成: 预训练(Pre-training):通过两个联合训练任务得到Bert模型微调(Fine-tune):在预训练得到bert模型的基础上进行各种各样的NLP 二、预训练 输入经过bert encoder层编…

BERT从零详细解读:BERT整体模型架构

基础结构-TRM的Encoder BERT使用多个Encoder堆叠在一起,其中bert base使用的是12层的encoder,bert large使用的是24层的encoder。 对于transformer来说,输入包括两个部分: 一部分是input enbedding,就是做词的词向量…

如何计算Bert模型的参数量

BERT是基于transformer结构的预训练模型。具体bert原理介绍,请参考博客:Bert系列解读及改进_&永恒的星河&的博客-CSDN博客_bert系列 求解Bert模型的参数量是面试常考的问题,也是作为算法工程师必须会的一个点。所谓会用并不代表熟悉…

关于Bert模型参数的分布

参数分布 Bert模型的版本如下: BERT-Base, Uncased: 12-layer, 768-hidden, 12-heads, 110M parameters BERT-Large, Uncased: 24-layer, 1024-hidden, 16-heads, 340M parameters BERT-Base, Cased: 12-layer, 768-hidden, 12-heads , 110M parameters BERT-L…

BERT模型原理的详细介绍

文章目录 参考文章1. BERT模型1.1 模型结构1.2 输入表示1.3 预训练任务1.3.1 Task 1:Masked Language Model1.3.2 Task 2:Next Sentence Prediction 1.4 微调(fine-tuning)基于句子对的分类任务基于单个句子的分类任务问答任务命名实体识别 2. 总结 参考文章 【NLP…

BERT和GPT模型简介

1. 引言 从现在的大趋势来看,使用某种模型预训练一个语言模型看起来是一种比较靠谱的方法。从之前 AI2 的 ELMo,到 OpenAI 的 fine-tune transformer,再到 Google 的 BERT、GPT,全都是对预训练的语言模型的应用。 本文将主要介绍…

BERT模型简介

基础架构-Transformer的Encoder: 由下到上,依次三个部分为输入、注意力机制和前馈神经网络 基础的Bert,六个encoder,六个decoder。 输入部分 input token embedding segment embedding position embedding bert预训练的NSP&am…

BERT 模型详解

BERT 结构 上图是 BERT 的结构图,左侧的图表示了预训练的过程,右边的图是对于具体任务的微调过程 BERT 的输入 BERT 的输入可以包含一个句子对 (句子 A 和句子 B),也可以是单个句子。同时 BERT 增加了一些有特殊作用的标志位: …

如何从零开始训练BERT模型

我的许多文章都专注于 BERT——这个模型出现并主导了自然语言处理 (NLP) 的世界,标志着语言模型的新时代。 对于那些之前可能没有使用过 Transformer 模型(例如 BERT 是什么)的人,这个过程看起来有点像这样: pip 安装…

BERT模型详解

Auto-Regressive & Auto-Encoding 在介绍当下最火热的BERT模型之前,我们先来看两个概念,Auto-Regressive和Auto-Encoding。 Auto-Regressive Auto-Regressive如上图所示,其实很像是一个语言模型,遵循的是链式法则&#xff0…

BERT(预训练Transformer模型)

目录 一、前言 二、随机遮挡,进行预测 三、两句话是否原文相邻 四、两者结合起来 五、总结 六、参考链接 一、前言 Bert在18年提出,19年发表,Bert的目的是为了预训练Transformer模型encoder网络,从而大幅提高准确率 Bert …

详细介绍BERT模型

文章目录 BERT简介BERT, OpenAI GPT, 和ELMo之间的区别相关工作BERT的改进 BERT 的详细实现输入/输出表示预训练BERT微调BERT BERT用在下游任务GLUE(一个自然语言任务集合)SQuAD v1.1(QA数据集)SQuAD v2.0SWAG 消融实验预训练任务的影响模型大小的影响基于特征的BERT方法 结论 …