
OpenCV
六甲横宝
这个作者很懒,什么都没留下…
展开
-
学习OpenCV 13 轮廓
学习OpenCV 13 轮廓Canny之类的边缘检测算法可以根据像素间差异检测出轮廓边界的像素,但它并没有将轮廓作为一个整体进行处理。而我们的任务就是要将这些边缘像素合成轮廓。轮廓查找Contour Finding一个轮廓对应一系列点,这些点以一定方式表示图像中的一条曲线。有多种方式可以表示一条曲线,在OpenCV中,轮廓用标准模板库(STL)向量vector<>表示,向量...原创 2019-04-18 12:55:12 · 214 阅读 · 0 评论 -
学习OpenCV 02 Mat对象
学习OpenCV 02 Mat对象Mat对象构造函数Mat() Mat(int rows,int cols,int type) Mat(Size size,int type) Mat(int rows,int cols,int type,const Scalar&s) Mat(Size size,int type,const Scalar&s) Mat(int n...原创 2019-04-04 18:33:36 · 166 阅读 · 0 评论 -
学习OpenCV 03 图像操作
学习OpenCV 03 图像操作读写像素 Scalar intensity=img.at<uchar>(y,x);或Scalar intensity=img.at<uchar>(Point(x,y)); Vec3f intensity=img.at<Vec3f>(y,x);float blue=intensity.v...原创 2019-04-04 19:21:37 · 219 阅读 · 0 评论 -
学习OpenCV 04 图像混合
学习OpenCV 04 图像混合线性混合操作相关API(addWeighted)void cv::addWeighted(inputArray src1, //参数1:输入图像Mat-src1 double alpha, //参数2:输入图像src1的alpha值 inputAr...原创 2019-04-05 11:52:28 · 166 阅读 · 0 评论 -
学习OpenCV 05 绘制形状和文字
学习OpenCV 05 绘制形状和文字cv::Point与cv::ScalarPoint表示2D平面上一个点(x,y) Point p;p.x=10;p.y=8;//p=Point(10,8); Scalar表示四个元素的向量Scalar(a,b,c);//a=blue,b=green,c=red,可表示RGB三个通道绘制线、矩形、圆、椭圆等基本几何形状...原创 2019-04-06 20:10:24 · 188 阅读 · 0 评论 -
学习OpenCV 06 鼠标事件
学习OpenCV 06 鼠标事件与键盘事件不同,鼠标事件是通过更加传统的回调(callback)函数机制完成的,即我们必须先写好一个回调程序,使OpenCV在发送任何鼠标事件时都可以调用这个回调程序。当我们完成回调程序后,需要在OpenCV中注册(register)这个函数,即告诉OpenCV这是一个正常的回调程序,用户使用鼠标在特定窗口完成一些操作后可以得到一定的响应。回调callbac...原创 2019-04-11 16:48:59 · 227 阅读 · 0 评论 -
学习OpenCV 07 边界外推和边界处理
学习OpenCV 07 边界外推和边界处理在实现滤波/卷积时,边界像素没有周围像素,这时候OpenCV采用的一种方法是在源图像周围添加虚拟像素,即边界外推。自定义边框cv::copyMakeBorder()就是一个为图像创建边框的函数,通过指定两幅图像,第一幅是源图像,第二幅是扩充之后的图像,同时指明填充方法,则这个函数就将第一幅图像填充后的结果保持在第二幅图像中。void cv...原创 2019-04-11 19:46:59 · 1056 阅读 · 0 评论 -
学习OpenCV 08 阈值化操作
学习OpenCV 08 阈值化操作图像处理过程中经常会遇到这种情况:完成多层处理步骤并需要作出一个最终决定,或者将高于或低于某一值的像素置零同时其他的像素保持不变,即阈值化操作。全局阈值cv::threshold()cv::threshold()实现了阈值化操作的功能,其原理是给定一个数组和阈值,对于数组中每个值,根据其高于或低于这个阈值作出相应处理。double cv::thr...原创 2019-04-12 13:31:52 · 189 阅读 · 0 评论 -
学习OpenCV 09 平滑/模糊处理
学习OpenCV 09 平滑/模糊处理平滑(smoothing)也称模糊(blurring),是一种简单而又常用的图像处理操作。其目的有很多,但通常是为了减少噪声(noise)和伪影(camera artifacts)。在降低图像分辨率(resolution)时,平滑也是非常重要的。预备知识在阐明平滑操作前,需要阐明几个概念:滤波器(filter)指的是一种由一幅图像I(x,y)根...原创 2019-04-12 16:00:59 · 421 阅读 · 0 评论 -
学习OpenCV 10 图像形态学操作
学习OpenCV 10 图像形态学(Image Morphology)操作膨胀与腐蚀Dilation and Erosion膨胀(dialation)是一种卷积操作,它将目标像素的值替换为卷积核覆盖区域的局部最大值。就像中值滤波一样,这是个非线性核的例子。通常,膨胀采用的核(kernel)是一个四边形或圆形的实心核,其锚点(anchor point)在中心。腐蚀(erosion)是和膨...原创 2019-04-15 13:44:30 · 925 阅读 · 0 评论 -
学习OpenCV 12 图像分析
学习OpenCV 12 图像分析Canny边缘检测The Canny Edge Detector在Canny算法中,先在X和Y方向上求得一阶导,然后将它们组合成为四个方向的导数,其中方向导数是局部最大值的点是组成边缘的候选项。这个算法通过对像素应用滞后阈值(hysteresis threshold)来形成这些轮廓(contour),即采用了两个阈值,上阈值(the upper thresh...原创 2019-04-18 10:24:02 · 391 阅读 · 0 评论 -
学习OpenCV 01 矩阵的掩膜操作
学习OpenCV 01 矩阵的掩膜操作获取图像像素指针Mat.ptr<uchar>(int i=0)获取像素矩阵的指针,索引i表示第几行。 获得当前行指针const uchar* current=myImage.ptr<uchar>(row); 获取当前像素点P(row,col)的像素值p(row,col)=current[col].像素范围处理saturat...原创 2019-04-03 17:32:19 · 396 阅读 · 0 评论