当前位置:   article > 正文

python+opencv学习(一)--图像的载入、读取、画图和保存_导入图像 –i = imread(); 显示图像 –figure, imshow(); 保持

导入图像 –i = imread(); 显示图像 –figure, imshow(); 保持图像 –i

1、读入图像
  使用函数 cv2.imread() 读入图像。这幅图像应该在此程序的工作路径,或者给函数提供完整路径,第二个参数是要告诉函数应该如何读取这幅图片。

  • cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,这是默认参数。
  • cv2.IMREAD_GRAYSCALE:以灰度模式读入图像
  • cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的 alpha 通道

2 显示图像
  使用函数 cv2.imshow() 显示图像。窗口会自动调整为图像大小。第一个参数是窗口的名字,其次才是我们的图像。你可以创建多个窗口,只要你喜欢,但是必须给他们不同的名字

cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。如果没有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键 a 是否被按下,这个后面我们会接着讨论。
cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删除的窗口名。

  1. def showimg(image_path):
  2. img = cv2.imread(image_path, 0) # 读取本地图片,目前OpevCV支持bmp、jpg、png、tiff
  3. cv2.namedWindow("Image") # 创建一个窗口用来显示图片
  4. cv2.imshow("Image", img) # 显示图片
  5. cv2.waitKey(0) # 等待输入,这里主要让图片持续显示。
  6. cv2.destroyAllWindows()
'
运行

3 保存图像
  使用函数 cv2.imwrite() 来保存一个图像。首先需要一个文件名,之后才是你要保存的图像。

cv2.imwrite('messigray.png',img)

4 绘制图像

绘制直线,由起点、终点绘制

  1. import numpy as np
  2. import cv2
  3. img = cv2.imread('image_0.jpg', 0)
  4. # Draw a diagonal blue line with thickness of 5 px
  5. cv2.line(img,(0,0),(511,511),(255,0,0),5)
  6. cv2.imshow('image', img)
  7. k = cv2.waitKey(0)
  8. if k == 27: # wait for ESC key to exit
  9. cv2.destroyAllWindows()
  10. elif k == ord('s'): # wait for 's' key to save and exit
  11. cv2.imwrite('a.jpg', img)
  12. cv2.destroyAllWindows()

绘制矩形

cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

画圆的话,只需要指定圆形的中心点坐标和半径大小。

cv2.circle(img,(447,63), 63, (0,0,255), -1)

画椭圆比较复杂,我们要多输入几个参数。一个参数是中心点的位置坐标。下一个参数是长轴和短轴的长度。椭圆沿逆时针方向旋转的角度。椭圆弧演顺时针方向起始的角度和结束角度,如果是 0 很 360,就是整个椭圆。查看cv2.ellipse() 可以得到更多信息。

cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

画多边形,需要指点每个顶点的坐标。用这些点的坐标构建一个大小等于行数 X1X2 的数组,行数就是点的数目。这个数组的数据类型必须为 int32。

  1. pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
  2. pts = pts.reshape((-1,1,2))
  3. cv2.polylines(img,[pts],True,(0,255,255))

要在图片上绘制文字,你需要设置下列参数:
  • 你要绘制的文字
  • 你要绘制的位置
  • 字体类型(通过查看 cv2.putText() 的文档找到支持的字体)
  • 字体的大小
  • 文字的一般属性如颜色,粗细,线条的类型等。为了更好看一点推荐使用linetype=cv2.LINE_AA。
在图像上绘制白色的 OpenCV

  1. font = cv2.FONT_HERSHEY_SIMPLEX
  2. cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

4 小结

加载灰度图,按s保存

  1. import numpy as np
  2. import cv2
  3. img = cv2.imread('image_0.jpg', 0)
  4. cv2.imshow('image', img)
  5. k = cv2.waitKey(0)
  6. if k == 27: # wait for ESC key to exit
  7. cv2.destroyAllWindows()
  8. elif k == ord('s'): # wait for 's' key to save and exit
  9. cv2.imwrite('a.jpg', img)
  10. cv2.destroyAllWindows()

官网:

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html

参考文档:

http://www.cnblogs.com/Undo-self-blog/p/8424056.html

https://blog.csdn.net/panfengzjz/article/details/80146601

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号