圣诞节又到啦嘻嘻!!!近来着手智能交通的一些项目,从中总结了几个常用的小点,分享出来以方便大家:
- inRange函数:
先祭出openCV的函数原型
void cv::inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst)
简单来说,这个函数就是用来判断输入图像src中每一个像素(pixel)是否在[lowerb,upperb]之间(Note:观察集合的开闭)。若为true则dst相应的像素赋为255,反之则赋为0。因此,该函数输出的dst将会是一幅二值化图像。
对于单通道图像的情况:
若一幅灰度图像src的某个像素的值在lowerb,upperb两个阈值范围之间,则dst对应的该像素值为255,相反则为0,这样便生成一幅二值化的输出图像dst。
image.png
对于双通道图像的情况:
image.png
即意味着当输入图像src的每个通道的像素值都在规定的[lowerb,upperb]阈值范围内时,二值化输出图像dst对应的像素值为255,若不能完全满足规定的条件,则dst对应的像素值为0。
三通道图像的情况以此类推。
-
openCV坐标系:
原点的位置是在图像的左上角,对于Mat, Rect, Point等等皆适用,在openCV的(x,y)坐标系中,x由左往右增大,y由上往下增大。
image.png
在一张图像中,对一个Rect 取的(x,y)即矩形自身的左上角坐标。
- 几何质心计算:
做物体检测时,很多时候会有定位物体轮廓质心的需要,所以这里简单解释一下怎么计算轮廓质心坐标。
那什么是轮廓呢嘻嘻?如下是一个轮廓实例~
image.png
在计算轮廓质心坐标前得先提一下“空间矩”(spatial moments)同学。
什么是空间矩呢?具体数学原理这里就不多说了(怕睡着),感兴趣的请参照:https://en.wikipedia.org/wiki/Image_moment
还有openCV提取空间矩的函数细节:https://docs.opencv.org/3.0-beta/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html
好~废话不多说,直接说怎么计算质心坐标了
轮廓点集表示为A,设质心为(x,y), openCV的矩计算函数为moment(),有
轮廓的空间矩为:moment(A),
则有
x=moment(A).m10/moment(A).m00
y=moment(A).m01/moment(A).m00
(Note!: m10, m00, m01 都是相关的数学参数,具体请参照空间矩的数学理论哦~)
到这里,总结完了咯~ 狐狐祝大家都有个快快乐乐的圣诞,比如不加班嘻嘻~
网友评论