zoukankan      html  css  js  c++  java
  • opencv- python使用

    opencv_python使用

    一、opencv中的Gui特性:

      1、读入图像:

        cv2.imread()函数读入图像。其参数是:

          (1)此图片的路径。

          (2)告诉函数如何读取这幅图片:    

            cv2.IMREAD_COLOR:读入一副彩色图像。但图像的透明度会被忽略,可以用1表示。

            cv2.IMREAD_GRAYSCALE:以灰度模式读入图像,可以用0表示。

            cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的alpha通道,我还没有试出来这个该如何表示。

          

    1 import numpy as np
    2 import cv2
    3 img=cv2.imread('F:pythonopencvpickongfu.jpg',0)
    View Code

      2、显示图像:

        cv2.imshow() 显示图像。第一个参数是窗口的名字,其次是获得的图像参数。

      3、保存图像:

        使用函数cv2.imwrite()来保存一个图像。第一个参数是一个文件名,之后是你要保存的图像。

      总结代码:

          

     1 #下面的程序将会加载一个灰度图,显示图片,按下’s’键保存后退出,或者按下 ESC 键退出不保存
     2 import numpy as np
     3 import cv2
     4 img=cv2.imread('F:pythonopencvpickongfu.jpg',0)
     5 cv2.imshow('功夫熊猫',img)
     6 k=cv2.waitKey(0)
     7 if k==27:
     8     cv2.destoryAllWindows()
     9 elif k==ord('s'):
    10     cv2.imwrite('F:pythonopencvpickongfu.png',img)
    11     cv2.destroyAllWindows()
    View Code

       4、使用matplotlib库:

          需要注意的是:matplotlib使用的是rgb模式,但cv2使用的是bgr顺序,所以如果用cv2加载图像,需要将其转换为rgb模式。

          

     1 # -*- coding: utf-8 -*-
     2 """
     3 Created on 2018/4/25
     4 @author:monty
     5 """
     6 
     7 import numpy as np
     8 import cv2
     9 from matplotlib import pyplot as plt
    10 
    11 img=cv2.imread('..pickongfu.jpg')
    12 plt.imshow(img)
    13 plt.xticks([])
    14 plt.yticks([])
    15 plt.show()
    16 cv2.imshow('kongfu',img)
    17 cv2.waitKey(0)
    18 cv2.destroyAllWindows()
    View Code

        如果不加转换:

          matplotlib画出来的图像是:

          

        正常图像:

          

      需要将img转换为rgb模式,代码为:

         img2=img[:,:,::-1]

     1 # -*- coding: utf-8 -*-
     2 """
     3 Created on 2018/4/25
     4 @author:monty
     5 """
     6 
     7 import numpy as np
     8 import cv2
     9 from matplotlib import pyplot as plt
    10 
    11 img=cv2.imread('..pickongfu.jpg')
    12 img2=img[:,:,::-1]
    13 plt.imshow(img2)
    14 plt.xticks([])
    15 plt.yticks([])
    16 plt.show()
    17 cv2.imshow('kongfu',img)
    18 cv2.waitKey(0)
    19 cv2.destroyAllWindows()
    View Code

     5、视频:

        (1)用摄像头捕获视频:

            

     1 # -*- coding: utf-8 -*-
     2 """
     3     Created on 2018/4/25 10:01
     4     @author:monty
     5     
     6 """
     7 import numpy as np
     8 import cv2
     9 
    10 #首先需要生成一个VideoCapture对象 参数是设备的索引号或者一个视频文件 你自己笔记本上的内置摄像头的索引号是参数0 可以通过设置成1或别的来选择摄像头
    11 cap=cv2.VideoCapture(0)
    12 
    13 while(True):
    14     ret,frame=cap.read()
    15 
    16     gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    17 
    18     cv2.imshow('frame',gray)
    19 
    20     if cv2.waitKey(1) & 0xFF == ord('q'):
    21         break
    22 
    23 cap.release()
    24 cv2.destroyAllWindows()
    View Code

        cap.read()  函数返回一个布尔值,如果帧读取是正确的,返回值是true,所以可以通过检查它的返回值来查看视频文件是否读取到了结尾。

        cap.get(propId)来获取视频的参数信息。这里propId可以是0~18之间的任何整数。

        其中一些值可以使用cap.set(propId,value)来修改,value是要设置的新值。

        (2)保存视频:

            

     1 #测试打开摄像头,保存视频
     2 import numpy as np
     3 import cv2
     4 
     5 cap=cv2.VideoCapture(0)
     6 
     7 fourcc=cv2.VideoWriter_fourcc(*'DIVX')
     8 
     9 out=cv2.VideoWriter('..picoutput.avi',fourcc,20.0,(640,480))
    10 
    11 while(cap.isOpened()):
    12     ret,frame = cap.read()
    13 
    14     if ret==True:
    15         frame=cv2.flip(frame,1)
    16 
    17         out.write(frame)
    18 
    19         cv2.imshow('frame',frame)
    20 
    21         if(cv2.waitKey(1) & 0xFF == ord('q')):
    22             break
    23     else:
    24         break
    25 
    26 cap.release()
    27 out.release()
    28 cv2.destroyAllWindows()
    View Code

           首先要创建一个VideoWriter的对象,来确定输出文件。接下来指定FourCC编码,播放频率和帧的大小。最后一个是isColor标签,如果是True,则每一帧是彩色的,否则是灰色的。

           cv2.flip()函数用法:

              

      6、opencv的绘图函数:

        以下函数需要设置这些参数:

          img:想要绘制图形的那副图像

          color:形状的颜色。

          thickness:线条的类型。

        

     1 import numpy as np
     2 import cv2
     3 
     4 # Create a black image
     5 img = np.zeros((512,512,3), np.uint8)
     6 
     7 # Draw a diagonal blue line with thickness of 5 px
     8 cv2.line(img,(0,0),(511,511),(255,0,0),5)
     9 cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
    10 
    11 cv2.circle(img,(447,63), 63, (0,0,255), -1)
    12 cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
    13 
    14 font=cv2.FONT_HERSHEY_SIMPLEX
    15 cv2.putText(img,'monty',(10,500), font, 4,(255,255,255),2)
    16 cv2.imshow('draw',img)
    17 cv2.waitKey(0)
    18 cv2.destroyAllWindows()
    View Code

       7、使用鼠标当画笔:

        

  • 相关阅读:
    Hibernate常用查询
    Hibernate多对多
    Hibernate简单检索方式(查询方式)
    Hibernate入门代码
    Hibernate一对多
    什么是Hibernate
    SpirngMVC入门第一天
    Docker一键部署Hadoop心得(二)
    Docker一键部署Hadoop心得(一)
    安装Docker的三种方式
  • 原文地址:https://www.cnblogs.com/yangsongwei/p/8933521.html
Copyright © 2011-2022 走看看