设置窗口可调整大小Python_OpenCV读取视频和图片

Posted 程-七辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置窗口可调整大小Python_OpenCV读取视频和图片相关的知识,希望对你有一定的参考价值。

-----------------------------------志当高远且脚踏实------------------------------------程_七辰

目录

入门OpenCV

1.前言

本文章向大家介绍OpenCV改变imshow窗口大小,窗口位置的方法.
主要包括OpenCV改变imshow窗口大小,窗口位置的方法使用实例、应用技巧、基本知识点总结和需要注意事项,有一定的参考价值!

2. 图片处理

导入库

import cv2

读取图片

img = cv2.imread('cat.jpg', cv2.IMREAD_COLOR)

设置长和宽

img = cv2.resize(img, (3104, 2048))

调整窗口大小

# 窗口大小可以改变
cv2.namedWindow('result', cv2.WINDOW_NORMAL) 

窗口大小不可以改变

cv2.namedWindow('result', cv2.WINDOW_AUTOSIZE)   

窗口大小自适应比例

cv2.namedWindow('result', cv2.WINDOW_FREERATIO)  

窗口大小保持比例

cv2.namedWindow('result', cv2.WINDOW_KEEPRATIO) 

显示色彩变成暗色

cv2.namedWindow('result', cv2.WINDOW_GUI_EXPANDED) 

关闭窗口

cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows() 

3. 完整代码

import cv2

img = cv2.imread('cat.jpg', cv2.IMREAD_COLOR)
img = cv2.resize(img, (3104, 2048))
# 窗口大小可以改变
cv2.namedWindow('result', cv2.WINDOW_NORMAL) 
# 窗口大小不可以改变   
cv2.namedWindow('result', cv2.WINDOW_AUTOSIZE) 
# 窗口大小自适应比例  
cv2.namedWindow('result', cv2.WINDOW_FREERATIO)  
# 窗口大小保持比例
cv2.namedWindow('result', cv2.WINDOW_KEEPRATIO)  
# 显示色彩变成暗色
cv2.namedWindow('result', cv2.WINDOW_GUI_EXPANDED)   
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

#4. 视频处理

导入库

import cv2

读取视频

cap = cv2.VideoCapture('Forest.mp4')
while cap.isOpened():
    ret, frame = cap.read()

调整窗口大小

 # 0可调大小,注意:窗口名必须imshow里面的一窗口名一直                   
    cv2.namedWindow("frame", 0)  

设置长和宽

 cv2.resizeWindow("frame", 1600, 900) 

运行显示

cv2.imshow('frame', frame)

关闭窗口

 #q键退出运行窗口【英文状态下】
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    cap.release()
cv2.destroyAllWindows()    

5.完整代码

import cv2
 
cap = cv2.VideoCapture('Forest.mp4')
while cap.isOpened():
    ret, frame = cap.read()
    # 调整窗口大小
    # 0可调大小,注意:窗口名必须imshow里面的一窗口名一直                   
    cv2.namedWindow("frame", 0)  
    # 设置长和宽                   
    cv2.resizeWindow("frame", 1600, 900)  
     #运行显示                  
    cv2.imshow('frame', frame)
    #q键退出运行窗口【英文状态下】
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
 
    cap.release()
cv2.destroyAllWindows()

6.励志语

1.读书买花长大.
2.花还会重新开的不同的夏天又来了.
3.减少没必要的倾诉和表达欲。
4.请你要发光而不是被照亮.
5.想做一个只记得快乐和知识点的人.
6.想和你一起期待夏天热吻啤酒街头耳机里的音乐live现场浪漫的一切.
7.永远势均力敌又在爱里温柔投降.
8.我将永远满怀爱意等待盛夏和你.
9.好心情有很多种见你是第一种10.希望你的生活每天都有开心一点而我就是那个开心一点.
11.不论这个世界有多坎坷我永远偏爱你.
12.偷偷浪漫吧避开世俗的眼光.
13.不见面的日子里真正的爱只会越加浓烈.
14.总有新故事值得盼望.

7.总结

用cv2.imshow()显示高分辨率图片时会发现只能显示图片的一部分,全屏了仍然只能看到这一部分,现在就解决啦!

人生苦短,我学Python!

自动布局和可调整大小视图的问题

【中文标题】自动布局和可调整大小视图的问题【英文标题】:Problems with autolayout and resizable views 【发布时间】:2014-12-01 15:13:51 【问题描述】:

我对自动布局有疑问。

我有三个不同的视图(也可以是 n 个视图)。当我将第一个固定到超级视图的顶部并将一个连接到另一个时,一切似乎都很好。但是如果我想改变第一个的高度,其他两个不会跟随(它们保持在同一个位置)。我对此感到奇怪的是,如果我只连接两个视图,则效果很好。

为了更好地理解我想要实现的目标,我使用三个视图制作了简单的示例解决方案:

http://i.stack.imgur.com/cMwiB.png

所以,当我将绿色视图的高度设置为 0(也可以是任何其他数字)并且只连接红色视图时,这工作正常,红色会按应有的方式移动。蓝色的没有连接,它保持在原来的位置:

这是我将蓝色连接到红色时的屏幕截图:

我想做什么:

也将蓝色连接到绿色(不起作用) 仅将蓝色连接到绿色(不起作用) “装箱”:当时有带视图的盒子(丑陋,难以管理,并非在所有情况下都有效)

我想知道的:

是什么导致了这种情况发生?我可以改变这种行为吗? 具有灵活长度的最佳做法是什么(除了 UITableView)

提前致谢。

【问题讨论】:

这里缺少链接(没有足够的声誉:()i.stack.imgur.com/nq4EX.pngi.stack.imgur.com/vh1fX.png 这确实是一种奇怪的行为。您能否将设置约束的代码(或 Interface Builder 屏幕截图)粘贴到您设置约束的位置? 这里是 xml 中的故事板:pastebin.com/LFa27mrv 有一些未解决的自动布局冲突不会影响这一点(我刚刚创建了问题中提到的这些连接)。这是一个没有代码的普通应用程序。只有一个故事板文件。谢谢 测试时如何将绿色视图的高度设置为 0? 嗯,我可以通过代码或者storyboard来设置,没关系... 【参考方案1】:

好吧,我想你落入了我前段时间研究自动布局时遇到的同样的陷阱。解释起来很棘手,但我会尽力而为。当您使用自动布局时,您需要完全忘记设置视图的框架。我的朋友,这包括改变尺寸和定位。当你使用自动布局时,你定义了一些约束,一些“规则”,视图在渲染屏幕时试图遵守,所以规则越具体,视图的行为就越随机。我的意思是,如果您只定义视图之间的间距,则意味着视图的高度无关紧要,因此在调用重新布局时某些视图可能会增长或缩小(也就是说,如果您不'不指定大小约束。您可能希望始终在每个布局中指定某些视图的大小...)

顺便说一句,在调用重新布局之后,您可以通过手动更改元素的框架来违反约束,但是当再次调用重新布局方法时,约束将被强制,因此大小视图的位置也会发生变化。快速提示:强制重新布局方法的一种简单方法是改变方向(模拟器中的命令+左/命令+右)。

所以说完之后,我不得不说您提供的布局完全按预期工作,至少对我来说是这样。当您更改方向时,您指定的约束始终受到尊重。如果你愿意,你可以尝试在 viewDidAppear 方法中应用一些框架设置,因为这个设置在自动布局之后被调用(因此,你可以暂时违反约束)。完成此操作后,您的视图将被破坏,但一旦您更改方向,则应再次尊重约束。确保是这样。

从这里我只能祝你好运;)哦,参考文档,当我半年前看到这个时,它对我来说是一个救命稻草。 https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html 可能看起来很经典,但它是一个非常好的文档。

编辑:最后一件事。我的印象是约束并非设计为动态的。你定义它们一次,它们就一直存在。它们的主要目的是确保子视图在每个屏幕分辨率下都按预期呈现,所以如果我要制作一个带有移动视图的应用程序,我会将它们留在自动布局之外,或者完全避免使用它。不过只是个人印象:)

【讨论】:

首先,非常感谢您的详细解释:) 我度过了一个漫长的夜晚,并找到了一种方法来实现我想要实现的目标。我会把它写在这里,所以如果有人遇到同样的问题,他/她可以找到答案:) 你说的一切都是正确的,如果你写下所有的常数并计算东西,一切都会按预期工作。所以不太可能在情节提要上进行动态更改。您可以做的是通过 IBOutlet 连接特定约束,然后将其更改为特定逻辑。就我而言,您必须定义所有的高度和间距,然后在代码后面更改 高度限制。经过一些实验,这乍一看是可以的,但我不确定以后这种行为,或者当你有复杂的逻辑时(可能很难维护)。如果我找到更好的方法,我也会在这里发布:) 是的,做起来总是很复杂,但真的很值得。另请注意,约束允许您指定大于或等于和小于或等于运算符,在您无法计算确切大小的情况下,您始终可以使用它们来确保最小值/最大值。最重要的是始终确保约束不会相互矛盾。如果您将它们指定为代码,它会返回一个巨大的错误,但我不知道界面生成器:(

以上是关于设置窗口可调整大小Python_OpenCV读取视频和图片的主要内容,如果未能解决你的问题,请参考以下文章

如何处理弹出、模态、可调整大小的表单

在 MFC 中处理 OnSize 函数或可调整大小的对话框

electron.js中可调整大小的窗口

如何从可调整大小的窗口中删除最小化和最大化按钮?

摆动面板可调整大小的间隙

如何使用纯 Javascript 使 HTML 元素可调整大小?