Python-OpenCV 按键切换显示

同时包括图片全屏操作,但是仅仅将窗口全屏会出现图片显示的内容还是原图大小,然后其他地方都是白屏的情况(显示不全,图片占不满整个屏幕):因此只能同时将图片放大到与自己的屏幕相同分辨率的大小才能实现。

切换图片:

'''
Author: joyce
Date: 2021-04-15 14:51:24
LastEditTime: 2021-05-01 16:34:02
LastEditors: Please set LastEditors
Description:: 
'''
import cv2
import numpy as np
temp=1#定义临时变量作为切换的条件
step=0#同一个按键切换时用到的临时变量,若是按不同按键切换则不需要
# cap = cv2.VideoCapture(6)#打开摄像头
frame1=cv2.imread('/home/joyce/timg.jpeg')#读取第一张图
frame2=cv2.imread('/home/joyce/1.jpg')#读取第二张图
frame1=cv2.resize(frame1,(2560,1440),cv2.INTER_AREA)#将图片人工放大到与屏幕分辨率相同大小
frame2=cv2.resize(frame2,(2560,1440),cv2.INTER_AREA)
# cv2.namedWindow("1",cv2.WINDOW_AUTOSIZE)#窗口只能自适应为图片大小,不可修改
cv2.namedWindow("1",cv2.WINDOW_NORMAL)#窗口可人工修改大小
cv2.setWindowProperty("1",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)#参数窗口设置为全屏

while(1):
    # ret, frame = cap.read()
    # cv2.imshow("capture", frame)
    c=cv2.waitKey(1) & 0xFF#按键
    if temp==1:
        # frame.release()
        cv2.imshow("1",frame1)
    if temp==2 :
        cv2.imshow("1",frame2)
    if c==27:#按esc退出
        break
    
    #________按同一按键切换_________#
    elif c==49:#49为键盘上数字按键1的ASCii码(字母上方的那一排数字键)
        temp=2
        step=step+1#计算切换次数
        if(step%2==0):#当step为偶数时,temp变量设为1
            temp=1
    #_____________________________#
    
    #_______按不同按键切换__________#
    #elif c==50:#50为键盘上数字按键2的ASCii码(字母上方的那一排数字键)
        #temp=1
    #_____________________________# 

同时我们注意一下 c=cv2.waitKey(1) & 0xFF

这个东西为什么我不直接:

while(1):
    # ret, frame = cap.read()
    # cv2.imshow("capture", frame)
    # c=cv2.waitKey(1) & 0xFF#按键
    if temp==1:
        # frame.release()
        cv2.imshow("1",frame1)
    if temp==2 :
        cv2.imshow("1",frame2)
    if cv2.waitKey(1) & 0xFF==27:#按esc退出
        break
    
    #________按同一按键切换_________#
    elif cv2.waitKey(1) & 0xFF==49:#49为键盘上数字按键1的ASCii码(字母上方的那一排数字键)
        temp=2
        step=step+1#计算切换次数
        if(step%2==0):#当step为偶数时,temp变量设为1
            temp=1
    #_____________________________#
    #_______按不同按键切换__________#
    # elif cv2.waitKey(1) & 0xFF==50:#50为键盘上数字按键2的ASCii码(字母上方的那一排数字键)
        # temp=1
    #_____________________________# 

如果像上面那样这么处理的话,会出现要按好几次按键才会切换一次的情况。

因为当我们走到第一个if的判断条件的时候会暂停,这个时候要你按一次按键才会进入 if 进行判断你按的是不是 esc 退出键,如果不是,这个时候程序才会继续往下走。

接着我们继续往下,到了第二个 if 判断,这里又要你自己按一次按键,然后他才会开始判断你按的是不是数字 1 键,如果是他才会进入判断体.也就是说,按上面这么写,我们切换一次图片需要按两次(或者以上?)键盘,这样的效果并不是我们想要的。

所以从一开始就直接定义一个变量记录下你按了哪个键,到下面进入 if 判断的时候就不会有按两次才会切换的情况啦,因为 if 那里已经得到了所有的判断条件,就不用你自己按了。

视频切换是同理的。


顺便丢两张键盘对应的 ASCii 码表:图片来源:https://blog.csdn.net/sinat_28631741/article/details/80961033


发表回复 0

Your email address will not be published. Required fields are marked *