opencv学习笔记(一)——读入图像,大小调整,保存图像,键盘控制,与matplotlib的对比,添加几何图形

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 键退出不保存。

matplotlib与opencv的对比

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

在图像上添加几何图形

1.线段

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()


2.矩阵 ,圆,椭圆

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()

3.添加文字

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数组上进行操作的,所以在显示文字的图像上之前添加的图形仍然在图像中。


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值