opencv学习笔记——之二基础知识1
2018-07-09 10:45
253 查看
1.
OpenCV(Open Source Computer Vision Library:http://opencv.org)是一个开源的基于BSD许可的库,它包括数百种计算机视觉算法。[b][u]开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别[/u][/b]【网上看】
2模块:
[b]核心功能[/b][b](Core functionality)[/b] - 一个紧凑的模块,定义了基本的数据结构,包括密集的多维Mat数组和被其他模块使用的基本功能。【数学和线性运算】
[b]图像处理[/b][b](Image processing)[/b] - 一个图像处理模块,它包括线性和非线性图像滤波,几何图形转化(重置大小,放射和透视变形,通用基本表格重置映射),色彩空间转换,直方图等。
[b]影像分析(video)[/b] - 一个影像分析模块,它包括动作判断,背景弱化和目标跟踪算法。
[b]3D校准(calib3d)[/b] - 基于多视图的几何算法,平面和立体摄像机校准,对象姿势判断,立体匹配算法,和3D元素的重建。
[b]平面特征(features2d)[/b] - 突出的特征判断,特征描述和对特征描述的对比。
[b]对象侦查(objdetect)[/b] - 目标和预定义类别实例化的侦查(例如:脸、眼睛、杯子、人、汽车等等)。
[b]highgui[/b] - 一个容易使用的用户功能界面。
[b]视频输入输出(videoio)[/b] - 一个容易使用的视频采集和视频解码器。
[b]GPU[/b] - 来自不同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 ...
OpenCV(Open Source Computer Vision Library:http://opencv.org)是一个开源的基于BSD许可的库,它包括数百种计算机视觉算法。[b][u]开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别[/u][/b]【网上看】
2模块:
[b]核心功能[/b][b](Core functionality)[/b] - 一个紧凑的模块,定义了基本的数据结构,包括密集的多维Mat数组和被其他模块使用的基本功能。【数学和线性运算】
[b]图像处理[/b][b](Image processing)[/b] - 一个图像处理模块,它包括线性和非线性图像滤波,几何图形转化(重置大小,放射和透视变形,通用基本表格重置映射),色彩空间转换,直方图等。
[b]影像分析(video)[/b] - 一个影像分析模块,它包括动作判断,背景弱化和目标跟踪算法。
[b]3D校准(calib3d)[/b] - 基于多视图的几何算法,平面和立体摄像机校准,对象姿势判断,立体匹配算法,和3D元素的重建。
[b]平面特征(features2d)[/b] - 突出的特征判断,特征描述和对特征描述的对比。
[b]对象侦查(objdetect)[/b] - 目标和预定义类别实例化的侦查(例如:脸、眼睛、杯子、人、汽车等等)。
[b]highgui[/b] - 一个容易使用的用户功能界面。
[b]视频输入输出(videoio)[/b] - 一个容易使用的视频采集和视频解码器。
[b]GPU[/b] - 来自不同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程序的苦恼? 大规模编程?如何办。 这里从单一小程序,到函数,到面向对象,到各大模块的大规模联合编译说起。 最初的想象是从函数局部变量的编译获取灵感。最后对各种概念进行局域限定。 简单介绍程序—编译—内存这个过程。 变量如何处理?程序代码如何处理? *总之,要告诉你们软件的历史和开发编译发展的一段往事 |
[b]例1 读入图片,灰度显示[/b] |
[b]import [/b]numpy [b]as [/b]np [b]import [/b]cv2 [b]'''[/b] [b]# Load an color image in grayscale 12[/b] [b]img = cv2.imread('DO6.jpg',0)[/b] [b]cv2.imshow('image',img)[/b] [b]cv2.waitKey(0)[/b] [b]cv2.destroyAllWindows()[/b] |
[b]2 摄像头摄取图像并显示[/b] |
[b]import [/b]numpy [b]as [/b]np [b]import [/b]cv2 [b]cap = cv2.VideoCapture(0)[/b] [b]while(True):[/b] [b]# Capture frame-by-frame[/b] [b] ret, frame = cap.read()[/b] [b]# Our operations on the frame come here 1[/b] [b] gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)[/b] [b]# Display the resulting frame[/b] [b] cv2.imshow('frame',gray)[/b] [b] if cv2.waitKey(1) & 0xFF == [/b][b]ord[/b][b]('q'):[/b] [b] break[/b] [b]# When everything done, release the capture[/b] [b]cap.release()[/b] [b]cv2.destroyAllWindows()[/b] |
[b]3 如何保存摄像头的录像文件[/b] |
[b]#保存视频[/b] [b]import [/b]numpy [b]as [/b]np [b]import [/b]cv2 cap = cv2.VideoCapture(0) fourcc = cv2.VideoWriter_fourcc(*[b]'XVID'[/b]) out = cv2.VideoWriter([b]'output.avi'[/b], fourcc, 20.0, (640, 480)) [b]while [/b](cap.isOpened()): ret, frame = cap.read() [b]if [/b]ret == [b]True[/b]: frame = cv2.flip(frame, 0) out.write(frame) cv2.imshow([b]'frame'[/b], frame) [b]if [/b]cv2.waitKey(1) & 0xFF == ord([b]'q'[/b]): [b]break[/b] [b] else[/b]: [b]break[/b] cap.release() out.release() cv2.destroyAllWindows() |
[b]4[/b][b] 如何在视频上显示文字[/b] |
font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA) (在画面上写字) |
[b]5 图片上画出几何图形[/b] |
# -*- 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 ) |
相关文章推荐
- Python-OpenCV学习笔记(一):基础知识汇总
- python 3.0学习笔记之二------python基础小知识
- fedora学习笔记 1:fedora与linux的一点基础知识
- Android Map开发基础知识学习笔记
- IOS研究之IOS开发笔记基础知识学习
- 计算广告学习笔记1.6 广告的基础知识-计算广告核心问题和挑战
- 计算广告学习笔记1.2 广告的基础知识-广告的有效性模型
- OpenCv学习笔记(一)——数字图形的基础和结构
- 学习笔记-基础知识12-网络编程
- [Python基础知识] - iteration,iterator 和 iterable 的学习笔记
- PHP学习笔记(四)--基础知识之常用运算符
- Objective-C基础教程学习笔记(三)面向对象编程基础知识
- 【java基础知识(学习笔记)】--方法的重载注意事项
- 学习笔记-基础知识9-集合框架(2)
- 学习笔记:操作系统内核基础知识
- 基础学习笔记之opencv(24):imwrite函数的使用
- 计算广告学习笔记1.9 广告的基础知识-在线广告系统结构
- Python学习笔记一(基础知识)
- ios开发学习笔记001-C语言基础知识
- CSS学习笔记:基础知识