利用opencv_python显示窗口加载图片
使用到的函数;
-
namedWindow( winname, windowFlage) 创建一个窗口,常用flage有: WINDOW_AUTOSIZE:用户不能改变窗口大小,窗口大小根据图片尺寸来显示
WINDOW_NORMAL: 可以随意拖拉窗口大小,可以给窗口大小设置默认尺寸
-
resizeWindow( winname, with, high)设置窗口大小
-
imread( path, imreadFlage)加载图片,该函数返回一个mat类型数据,flage = 0则加载灰度图像,=1则加载彩色图像,默认为1
-
imshow(winname, mat类型【若无可用0代替】 ),把图片设置在窗口上显示出来
-
waitKey(0): 键盘绑定函数,毫秒为单位,若传入0则无限期等待
建立一个窗口加载一张图片代码段:
import cv2
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
img = cv2.imread('/STUDY_OPENCV/img/2.jpg')
cv2.resizeWindow('image',1080,946)
cv2.imshow('image',img)
key = cv2.waitKey(0)
if(key == 'a'):#键盘敲a则退出
exit()
cv2.destroyAllWindows()#释放所有窗口资源
运行效果:
windows下访问图片路径: d:\\uuu\\xx\\xx.jpg
其实上面代码退出部分有点逻辑问题,以下做个测试
import cv2
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
img = cv2.imread('d:\\STUDY_OPENCV\\img\\2.jpg')
cv2.resizeWindow('image',1080,946)
cv2.imshow('image', img )
key = cv2.waitKey(0)
print(key)
print('a')
print(ord('a')) #ord(‘a’)表示将a的ASCII码获取出来
if(key == 'a'): #键盘敲a则退出
print(1111) #若条件进去则打印1111
exit()
cv2.destroyAllWindows()#释放所有窗口资源
图片出来,按下‘a’之后运行结果:
可以发现并没有打印出11111,说明没有进去,key == 'a’这个条件不成立(一个是97,一个是a)
而且应该在按下a之后就立马释放窗口资源,否则退出之后再释放就无意义
waitKey()返回值是int型,ascii码是八位
修改后代码如下
import cv2
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
img = cv2.imread('d:\\STUDY_OPENCV\\img\\2.jpg')
cv2.resizeWindow('image',1080,946)
cv2.imshow('image', img )
key = cv2.waitKey(0)
# print(key)
# print('a')
# print(ord('a')) #ord(‘a’)表示将a的ASCII码获取出来
if(key & 0xFF == ord('a')): #键盘敲a则退出,取key的后八位看其是否相等(也可以不用&oxff)
print(1111) #若条件进去则打印1111
cv2.destroyAllWindows()#释放所有窗口资源
图片出来,按下‘a’之后运行结果: