import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('cat.jpg',0)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫 秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果 按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。如果没 有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限 期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键 a 是否 被按下。
cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删 除的窗口名。如果没有这行代码,在关闭图像时会卡住。
img1 = cv2.imread('me.jpg',0)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
有的图像分辨率比电脑屏幕的分辨率大,如果不调整的话会显示不全,这时就需要调整窗口大小。使 用 到 的 函 数 是 cv2.namedWindow()。 初始设定函数标签是cv2.WINDOW_AUTOSIZE。但是如果你把标签改成cv2.WINDOW_NORMAL,你就可以调整窗口大小了。当图像维度太大, 或者要添加轨迹条时,调整窗口大小将会很有用。
cv2.imwrite('img.png',img)
img = cv2.imread('cat.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exit
cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
cv2.imwrite('messigray.png',img)
cv2.destroyAllWindows()
上面的程序将会加载一个灰度图,显示图片,按下’s’键保存后退出,或者按下 ESC 键退出不保存。
img = cv2.imread('cat1.jpg')
b,g,r = cv2.split(img)
img2 = cv2.merge([r,g,b])
plt.subplot(121);plt.imshow(img);plt.title('bgr')
plt.subplot(122);plt.imshow(img2);plt.title('rgb')
plt.show()
cv2.imshow('bgr image',img)
cv2.imshow('rgb image',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
通过比较可以看出,opencv和matplotlib的rgb通道顺序时有差别的,用opencv读取图像时三色通道顺序是b,r,g,用它显示图像时也必须按照这个顺序才能正常显示图像,而matplotlib的顺序是r,g,b
img=np.zeros((512,512,3), np.uint8)#创建一个image
cv2.line(img,(0,0),(511,511),(255,0,0),5)#在img上画一条线,起点(0,0),终点(511,511,),颜色设置为(255,0,0)即为蓝色,粗细为5
cv2.imshow("line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)#左上坐标和右下坐标
cv2.circle(img,(447,63), 63, (0,0,255), -1)#中心点坐标,半径,颜色,中间填充
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)#椭圆,中心坐标,长轴,短轴,逆时针旋转角度,椭圆弧演顺时针方向起始的角度和结束角度,如果是 0 和 360,就是整个椭圆
cv2.imshow("cir", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2)#位置,字体,大小,颜色,粗细
cv2.imshow("cir", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
我们可以看到,这些添加操作是在img数组上进行操作的,所以在显示文字的图像上之前添加的图形仍然在图像中。