void cvtColor(InputArray src, OutputArray dst, ) src: 输入图像 dst: 输出图像 code: 颜色空间转换标识符 OpenCV2的CV_前缀宏命名规范被OpenCV3中的COLOR_式的宏命名前缀取代 注意RGB色彩空间默认通道顺序为BGR 具体可以参考: enum cv::ColorConversionCodes部分 dstCn: 目标图像的通道数,该参数为0时,目标图像根据源图像的通道数和具体操作自动决定 示例代码如下: #includ…
void imshow(const string& winname InputArray mat); winname 窗口表识名称 mat 需要显示的图像.InputArray类型,声明如下 typedef const _InputArray& InputArray; _InputArray定义比较复杂,类里先定义了一个枚举,然后是各类的模版类型和一些方法.遇到InputArray/OutputArray类型,可以把它当作Mat类型处理. 图像大小缩放 如果窗口是用CV_WINDOW_AU…
最近正在系统学习OpenCV,将不定期发布笔记,主要按照毛星云的<OpenCV3编程入门>的顺序学习,会参考官方教程和文档.学习工具是Xcode+CMake,会对书中一部分内容更正,并加入cmakelist的内容. 书中大部分内容来自OpenCV文档,其实比较推荐官方文档和教程 OpenCV2.4.13: http://docs.opencv.org/2.4/index.html OpenCV安装路径下的include文件夹包含opencv和opencv2两个文件夹.opencv文件夹包含Op…
再更一发好久没更过的OpenCV,不过其实写到这个部分对计算机视觉算法有所了解的应该可以做到用什么查什么了,所以后面可能会更的慢一点吧,既然开了新坑,还是机器学习更有研究价值吧... 图像在内存中的存储方式 灰度图像 RGB图像,矩阵的列会包含多个子列 因为内存足够大,可以实现连续存储,因此,图像中的各行就能一行一行地连接起来,形成一个长行.连续存储,有助于提高图像扫面速度,可以使用isContinuous()来判断矩阵是否是连续存储. 颜色空间缩减 对于三通道图像,一个像素对应的颜色有一千六百…
好久没有更新了,原谅自己放了个假最近又在赶进度,所以...更新的内容是很靠后的第八章,因为最近工作要用就先跳了,后面会更新笔记编号...加油加油! 在二值图像中寻找轮廓 void cv::findContours ( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset = Point() ) image: 输入图像,需为8位单…
bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>()); filename 待写入的文件名.保存图像的格式由扩展名决定. img 一般为一个Mat类型的图像. 图像要求:单通道或三通道图像,8bit或16bit无符号数,其他类型输入需要用函数进行转换 (这个还是挺重要的,之前想存一个float型的Mat, 发现并没有好的办法,最后解决方…
VideoCapture是OpenCV 2.X中新增的类,提供从摄像机或视频文件捕获视频的C++接口.利用它读入视频的方法一般有两种: // method 1 VideoCapture capture; capture.open("1.avi"); // method 2 VideoCapture capture("1.avi"); 读取并播放视频 ReadPlayVideo.cxx #include <opencv2/opencv.hpp> int m…
几个入门的简单程序,和对应的CMakeList, 虽然简单重新测一下写一下也是好的. CMake教程传送门 图像显示 ShowImage.cxx #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgcodecs/imgcodecs.hpp> int main(){ cv::Mat srcImage = cv::imread("1.jp…
DrawShapes.cxx # include "DrawShapes_utils.h" #define WINDOW_NAME1 "Painting 1" #define WINDOW_NAME2 "Painting 2" // main int main( void ) { // crate Mat image cv::Mat atomImage = cv::Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV…
Matx 轻量级的Mat,必须在使用前规定好大小,比如一个2x3的float型的Matx,可以声明为Matx23f Vec Vec是Matx的一个派生类,是一个一维的Matx,跟vector很相似.在OpenCV源码中定义如下: template<typename _TP, > {...}; typedef Vec<uchar, > Vec2b; Range 使OpenCV的使用更像MATLAB, Range::all()等同于MATLAB的:,Range(a,b)等同于MATLA…
IplImage 与 Mat IplImage是OpenCV1中的图像存储结构体,基于C接口创建.在退出之前必须release,否则就会造成内存泄露.在一些只能使用C语言的嵌入式系统中,不得不使用. IplImage* img = cvLoadImage(); Mat类内存分配是自动完成的,不必手动开辟空间(非必须),不必在不需要时释放空间. Mat类的构成 Mat由矩阵头和一个指向存储图像矩阵的指针组成.为应该尽量避免图像的复制,加快程序运行速度,Mat的拷贝构造函数只复制信息头和矩阵指针,不…
) winname 窗口名字 onMouse 指定窗口每次鼠标事件发生的时候,被调用的函数指针.函数的原型应为void Foo(int event, int x, int y, int flags, void* param). event: 变量EVENT_XXX,例如 EVNET_MOUSEMOVE: 鼠标移动消息 EVENT_LBUTTONDOWN: 鼠标左键按下消息 x, y: 鼠标指针在图像坐标系中的坐标值(不是窗口坐标系) flags: EVENT_FLAG的组合 param: 用户定…
OpenCV中没有实现按钮的功能,我们可以利用滑动条来实现按钮功能. , ); trackbarname 轨迹条的名字. winname 窗口的名字,轨迹条会依附在这个窗口上. value 一个指向整型的指针,表示滑块的位置,在创建时,滑块的初始位置就是该变量当前的值. count 滑块可以达到的最大位置的值.滑块最小位置的值始终为0. onchange 指向回调函数的指针,每次滑块位置改变时,这个函数都会进行回调.并且这个函数的原型必须为void XXXX(int,void*):其中第一个参数…
是的是的,忍着尿意努力更新,就是为了更到wuli男神的部分,当然要把男神放在前面镇楼,欢迎下载配图,具体操作见code wuliEddie.jpg logo.png results.jpg LoadShowWriteImage.cxx #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> //#include <opencv2/imgcodecs/imgcodecs.hpp> //#in…
Mat imread( ); filename 载入的图像名: flags 指定加载图像的颜色类型,默认载入三通道彩色图像, 如果取枚举类型 (OpenCV3中暂时失效),则定义如下 enum{ CV_LOAD_IMAGE_UNCHANGED = -, /* 8 bit, color or not */ CV_LOAD_IMAGE_GRAYSCALE = , /* 8 bit, gray */ CV_LOAD_IMAGE_COLOR = , /* ?, color */ CV_LOAD_IMAG…
官方例程 事例程序位于opencv-3.1.0/samples/cpp/ 目录下,可以通过编译整个工程,编译所有的Sample Code 显示当前使用的OpenCV版本 CV_VERSION为标识当前OpenCV版本的宏 printf("\t OpenCV Version: OpenCV " CV_VERSION); 头文件opencv.hpp opencv2/opencv.hpp中包含了OpenCV各模块的头文件,原则上仅写一句: #include <opencv2/openc…
Point 二维坐标系下的整数点, 定义如下 typedef Point_<int> Point2i; typedef Point2i Point; typedef Point_<float> Point2f; 构造函数如下: Point_ () Point_ (_Tp _x, _Tp _y) Point_ (const Point_ &pt) Point_ (const Size_< _Tp > &sz) Point_ (const Vec< _…
void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE); 创建一个窗口.imshow直接指定窗口名,可以省去此函数,但如果显示图像之前需要其他窗口操作时,需要调用此函数. winname 窗口标识符/窗口名称 flags 窗口标志位,可为如下几种值 WINDOW_NORMAL (CV_WINDOW_NORMAL in OpenCV2) 用户可以改变窗口的大小: WINDOW_AUTOSIZE (CV_WINDOW_AU…
cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致. 具体调用形式如下: void cv::cvtColor( cv::InputArray src, // 输入序列 cv::OutputArray dst, // 输出序列 int code, // 颜色映射码 // 输出的通道数 (0='automatic') ); 其中,最后一个参数dstCn用于指定…
1.1 颜色空间介绍 RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV(色 调 Hue,饱和度 Saturation,亮度 Value)是根据颜色的直观特性创建的一种颜色空间, 也称六角 锥体模型. 参考:https://blog.csdn.net/taily_duan/article/details/51506776 为什么会选择 HSV 空间而不是 RGB 空间? 对于图像而…
学习如歌对图像进行颜色空间转换,从BGR到灰度图,或者从BGR到HSV等 创建一个程序用来从一幅图像中获取某个特定颜色的物体 1.转换颜色空间 OpenCV中有超过150种进行颜色空间转化的方法,但是实际上经常用到的也就两种:BGR<->Gray,BGR<->HSV 要用的函数是cv2.cvtColor(input_img,flag)flag就是转换类型 cv2.COLOR_BGR2GRAY 就是BGR<->Gray转换 cv2.COLOR_BGR2HSV 就是BGR&…
# coding: utf-8 ''' 第13章主要介绍:颜色空间转换 ''' import cv2 import numpy as np ''' 经常用到的颜色空间转换是: BGR<->Gray 和 BGR<->HSV cv2.cvtColor(input_image , flag),flag是转换类型:cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2HSV HSV(Hue , Saturation , Value):色调,饱和度,明度 色度H:用角度度量,取值…
我们生活中大多数看到的彩色图片都是RGB类型,但是在进行图像处理时,需要用到灰度图.二值图.HSV.HSI等颜色制式,opencv提供了cvtColor()函数来实现这些功能.首先看一下cvtColor函数定义: C++: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 ); 1 参数解释: . InputArray src: 输入图像即要进行颜色空间变换的原图像,可以是Mat类 . OutputArray…
接上一笔记[terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046 http://www.cnblogs.com/kkterry/p/3279282.html 在系统下执行tkprof,效果是把trace文件转换成可供人类阅读的格式 (个人感觉不是很爽,trace文件输出的时候直接弄个好格式不就得了) 语法: tkprof tracefile output_file explain=username/passwd ##对trace文件中的sql语句产生执行计划,会…
OpenCV的颜色空间转换函数:   C++: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )   参数dstCn原来一直沿用CV_BGR2GRAY, CV_RGB2GRAY, CV_GRAY2BGR, CV_GRAY2RGB等格式,但最新几个版本的OpenCV已改为COLOR_BGR2GRAY类似形式,今天才看源代码imgproc.hpp才发现,但官方文档还没修改,如下图,如果程序中使用较新的版本Op…
  SQL_TRACE/10046 事件是 Oracle 提供的用于进行 SQL 跟踪的手段,在日常的数据库问题诊断和解决中是非常常用的方法.但其生成的trace文件需要tkprof工具生成一个可供人类阅读的格式才可. TKPROF用法请参考[terry笔记]Oracle会话追踪(二):TKPROF http://www.cnblogs.com/kkterry/p/3279288.html 会话追踪可以追踪本会话.其他会话以及整个数据库,但是追踪整个数据库会对数据库的cpu.io造成很大负载,并…
golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Atoi(string)#string到int64int64, err := strconv.ParseInt(string, 10, 64)#int到stringstring:=strconv.Itoa(int)#int64到stringstring:=strconv.FormatInt(int64,1…
meanshift 被应用于 object track 中,其主要思想如下: 如下图所示,对该点集应用 meanshift 算法可以定位到点集最稠密位置,而点集最稠密位置即为我们需要跟踪的物体位置. 1)为什么点集最稠密位置即为我们需要跟踪的物体位置呢?这一般情况下是使用 histogram backprojection 实现, histogram backprojection 将原始图像转换为类似下图的点集,更准确的说是转换为是否为跟踪物体的概率图. 2)下图使用点集稠密程度模拟概率图,准确的…
time:2015年 10月 03日 星期六 13:54:17 CST # opencv笔记3:trackbar简单使用 当需要测试某变量的一系列取值取值会产生什么结果时,适合用trackbar.看起来就是debug的一种技术手段了. 主要是使用createTrackbar函数.具体讲,是把trackbar放到一个窗口中,并为trackbar设定回调函数,步骤还是有点繁琐的: 定义图像 定义窗口 定义回调函数 创建trackbar 回调函数初始化 善后工作 其中回调函数参数规定为(int, vo…
OpenCV官方教程中文版 for Python,原文为段立辉翻译,感谢Linux公社www.linuxidc.com此文档为自学转述,如有侵权请联系本人 使用工具Python3.6使用包cv2,numpy涉及函数cv2.cvtColor(),cv2.inRange() 1.转换色彩空间 在 OpenCV 中有 超过150 种进行颜色空间转换的方法.但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV.     我们用到的函数是cv2.cvtColor(input_im…