提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Python pyqt5 中使用 label 对视频、"tif" | "tiff"、图片文件自适应显示
提示:这里可以添加本文要记录的大概内容:
1、label 的一些设置,主要是文本、图片对齐方式设置(居中)
2、视频在 label 中播放,简易视频播放器
3、将读取的灰度数组在 label 上自适应显示或播放
4、图片在 label 上自适应显示
提示:以下是本篇文章正文内容,下面案例可供参考
使用 pyqt5 设计好窗口后,转为 .py 文件。
对 label 属性的一些修改
代码如下(示例):
# 创建 QLabel
self.FileDisplay = QtWidgets.QLabel(self.CentralWidget)
# 设置 label 位置大小
# QtCore.QRect(xPosition, yPosition, width, height)
self.FileDisplay.setGeometry(QtCore.QRect(20, 140, 640, 512))
# 设置形状最小值
# QtCore.QSize(width, height)
self.FileDisplay.setMinimumSize(QtCore.QSize(640, 512))
# -----------------------------------------------------------
# 设置 label 中文本或图片的对其方式
# AlignCenter: 垂直水平居中对齐
# AlignVCenter: 垂直居中
# AlignHCenter: 水平居中
# AlignLeft: 水平方向靠左
# AlignRight: 水平方向靠右
# AlignTop: 垂直方向靠上
# AlignButton: 垂直方向靠下
# AlignJustify: 水平方向调整间距两端对齐
self.FileDisplay.setAlignment(QtCore.Qt.AlignCenter)
# -----------------------------------------------------------
# 设置现状
self.FileDisplay.setFrameShape(QtWidgets.QFrame.Box)
# 设置初始显示的文字
self.FileDisplay.setText("")
# 控件名称
self.FileDisplay.setObjectName("FileDisplay")
代码如下(示例):
import cv2
# filepath: 视频文件完整路径
video = cv2.VideoCapture(filepath)
# 获取输入视频的宽度
width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
# 获取输入视频的高度
height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 获取视频帧数
frame_number = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
# 获取输入视频的帧率
frame_rate = int(video.get(cv2.CAP_PROP_FPS))
ratio1 = width / 1920 (label 宽度)
ratio2 = height / 1080 (label 高度)
ratio = max(ratio1, ratio2)
while video.isOpened():
ret, frame = video.read()
# 将图片转换为 Qt 格式
# QImage:QImage(bytes,width,height,format)
picture = QtGui.QImage(frame.data, width, height, 3*width, QImage.Format_RGB888)
pixmap = QPixmap.fromImage(picture)
# 按照缩放比例自适应 label 显示
pixmap.setDevicePixelRatio(ratio)
self.FileDisplay.setPixmap(pixmap)
cv2.waitKey(10)
video.release() # 释放资源
首先读取 “.tif” | “.tiff” 文件
可以使用 < import tifffile > 这个库读取文件
代码如下(示例):
# ratio: 帧缩放比例
ratio1 = width / 1920 (label 宽度)
ratio2 = height / 1080 (label 高度)
ratio = max(ratio1, ratio2)
# 将图片转换为 Qt 格式,才能在 label 上显示
# 若是 tif、tiff 灰度图显示
# uint8 型: format = QImage.Format_Grayscale8
# uint16 型: format = QImage.Format_Grayscale16
# QImage:QImage(input array,width,height,format)
picture = QtGui.QImage(frame_array.data, width, height, 3*width, QImage.Format_Grayscale8)
pixmap = QPixmap.fromImage(picture)
# 按照缩放比例自适应 label 显示
pixmap.setDevicePixelRatio(ratio)
# 在 label 中显示
self.FileDisplay.setPixmap(pixmap)
format 具体格式看官方文档:
https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtgui/qimage.html
代码如下(示例):
# filepath: 文件完整路径
pixmap = QPixmap(filepath)
ratio1 = pixmap.width() / 1920 (label 宽度)
ratio2 = pixmap.height() / 1080 (label 高度)
ration = max(ratio1, ratio2)
pixmap.setDevicePixelRatio(ration)
self.FileDisplay.setPixmap(pixmap)
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby数组,我们在StackOverflow上找到一
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat
我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article