opencv学习笔记——之二基础知识1

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.

OpenCV(Open Source Computer Vision Library:http://opencv.org)是一个开源的基于BSD许可的库,它包括数百种计算机视觉算法。开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别【网上看】

2模块:

  • 核心功能(Core functionality) - 一个紧凑的模块,定义了基本的数据结构,包括密集的多维Mat数组和被其他模块使用的基本功能。【数学和线性运算
  • 图像处理(Image processing) - 一个图像处理模块,它包括线性和非线性图像滤波,几何图形转化(重置大小,放射和透视变形,通用基本表格重置映射),色彩空间转换,直方图等。
  • 影像分析(video) - 一个影像分析模块,它包括动作判断,背景弱化和目标跟踪算法。
  • 3D校准(calib3d) - 基于多视图的几何算法,平面和立体摄像机校准,对象姿势判断,立体匹配算法,和3D元素的重建。
  • 平面特征(features2d) - 突出的特征判断,特征描述和对特征描述的对比。
  • 对象侦查(objdetect) - 目标和预定义类别实例化的侦查(例如:脸、眼睛、杯子、人、汽车等等)。
  • highgui - 一个容易使用的用户功能界面。
  • 视频输入输出(videoio) - 一个容易使用的视频采集和视频解码器。
  • GPU - 来自不同OpenCV模块的GPU加速算法。
  • 一些其他的辅助模块,比如FLANN和谷歌的测试封装,Python绑定和其他。
  • 所有的OpenCV类和函数都放在cv的命名空间。因此,你的代码去访问这些功能,需要使用cv::字符或者使用命名空间cv;指针。

     #include "opencv2/core.hpp"

        2 ...

        3 cv::Mat H = cv::findHomography(points1, points2, CV_RANSAC, 5);

        4 ...

    或者:

     #include "opencv2/core.hpp"

        2 using namespace cv;

        3 ...

        4 Mat H = findHomography(points1, points2, CV_RANSAC, 5 );

        5 ...

    3 什么是命名空间

    命名空间可以相互联系和组织成一个具有任意层次的由类和类的实例组成的网状结构,这种结构有点象文件系统的树状结构,在同一个层次的情况下,命名空间必须具有互异的名称。

     

    4程序的苦恼?

    大规模编程?如何办。

    这里从单一小程序,到函数,到面向对象,到各大模块的大规模联合编译说起。

    最初的想象是从函数局部变量的编译获取灵感。最后对各种概念进行局域限定。

    简单介绍程序—编译—内存这个过程。

    变量如何处理?程序代码如何处理?

    *总之,要告诉你们软件的历史和开发编译发展的一段往事

  •  

    例1 读入图片,灰度显示

    import numpy as np
    import cv2
    '''
    # Load an color image in grayscale 12
    img = cv2.imread('DO6.jpg',0)
    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

     

2 摄像头摄取图像并显示

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
    ret, frame = cap.read()
# Our operations on the frame come here 1
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

 

 

3 如何保存摄像头的录像文件

#保存视频

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while (cap.isOpened()):
    ret, frame = cap.read()
    if ret == True:
        frame = cv2.flip(frame, 0)
        out.write(frame)
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows()

 

 

4 如何在视频上显示文字

font = cv2.FONT_HERSHEY_SIMPLEX  

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

(在画面上写字)

 

5 图片上画出几何图形

# -*- coding: utf-8 -*-
import numpy as np
import cv2

img = cv2.imread('D001.jpg',1)
font= cv2.FONT_HERSHEY_SIMPLEX    #使用默认字体
cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5) #画直线
#        图片  起点    终点        颜色        线宽

cv2.rectangle(img,  (384, 0), (510, 128), (0, 255, 0), 3)
# 画矩形    被画图片  起顶点    终顶点      颜色       线宽
cv2.circle(img,    (447,63), 63,   (0,0,255), -1 )
# 画圆    被画图片   圆心    半径      颜色     线宽(-1代表内部涂满色)

imge= cv2.putText( img, 'Hello world',( 0,400 ),font, 1.2,(128,255,76),2 )
# 在图上写字     被写图  字的内容        起始位置  字体  大小 颜色      笔画宽
cv2.imshow( 'ssimage',imge )
cv2.waitKey( 0 )

 

转载于:https://my.oschina.net/u/3902915/blog/1842588

你可能感兴趣的:(人工智能,python,数据结构与算法)