
OpenCV学习旅程
文章平均质量分 86
修于心,怀于思
这个作者很懒,什么都没留下…
展开
-
OpenCV学习第一篇:开发环境搭建以及显示电脑中的图片
第一步:我们下载好了opencv安装在文件内,位置自选,我的是这样的,这一步最简单 第二步:我的电脑右键属性-高级系统设置-环境变量-系统变量-Path 加上;D:\opencv\build\x64\vc14\bin,特别注意分号!步骤如图 第三步:相信你已经装好了vs2015,我们新建vc++项目,注意选择空项目 第四步:我们开始部署vs的开发环境 到这里为止环境部署原创 2017-11-10 13:12:25 · 408 阅读 · 0 评论 -
OpenCV学习第十一篇:形态学操作
开操作-open——CV_MOP_OPEN先腐蚀,后膨胀 可以去掉小的对象,假设对象是前景色,背景是黑色 相关api Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1)) morphologyEx(src, dst, CV_MOP_GRADIENT, kernel)#include ...原创 2017-11-21 21:41:57 · 764 阅读 · 0 评论 -
OpenCV学习第十篇:图像模糊二
1.中值滤波 2.双边滤波中值滤波统计排序滤波器 中值对椒盐噪声有很好的抑制作用 中值滤波的意思是绿色框框区域内的像素点的值,从小到大排序,去中间的值给正中间的值,也就是用124替换150,最大值和最小值滤波也是同样的道理,用最大值或者最小值替换中间的值!双边滤波均值模糊无法克服边缘像素信息丢失缺陷,原因是均值滤波是基于平均权重 高斯模糊部分克服了该缺陷,但是无法完全避免,应为没有考虑像原创 2017-11-20 21:48:19 · 666 阅读 · 0 评论 -
OpenCV学习第十四篇:图像金字塔-上采样和降采样
图像金字塔: 1.在图像处理中,经常需要调整图像大小,最常见的就是放大和缩小,几何变换也可以实现图像放大和缩小 2.一个图像金字塔式一系列的图形组成,最底下一张图像尺寸最大,最上方的图形尺寸最小,从空间上从上向下看,就像一个金字塔分类 高斯金字塔-对图像进行降采样 拉普拉斯金字塔-重建一张图像高斯金字塔式从底向上,逐层降采样得到 降采样之后图像大小是原图像MXN的M/2xN/2,就是对原图...原创 2017-11-30 21:30:37 · 2193 阅读 · 0 评论 -
OpenCV学习第九篇:图像模糊(卷积)
模糊原理: Smooth/Blur是图像处理中最简单和常用的操作之一 使用该操作的原因之一就为了给图像预处理时候减低噪声 使用Smooth/Blur操作其背后是数学的卷积计算 通常这些卷积算子计算都是线性操作,所以又叫线性滤波 假设6x6的图像像素点矩阵 黄色3x3区域代表算子卷积过程: 6x6上面是个3x3的窗口,从左向右,从上向下移动,黄色的每个像素点值之和取平均值赋给中心红色...原创 2017-11-15 20:39:10 · 2808 阅读 · 1 评论 -
OpenCV学习第十三篇:提取水平和垂直线(去除干扰线)
1.结构元素 可以是任意形状的结构元素:矩形,圆,直线,磁盘形状,砖石形状等 2.提取步骤 输入图像彩色图像imread 转换为灰度图像cvtColor 转换为二值图像adaptiveThreshold 定义结构元素 开操作(腐蚀+膨胀)提取水平和垂直线 3.api adaptiveThreshold-转化为二值图像( Mat src(输入灰度图像), Mat dest(二值图...原创 2017-11-29 21:03:44 · 13992 阅读 · 5 评论 -
OpenCV学习第十二篇:带透明通道图像合成(缩放,旋转,和ROI)
第一步:获取素材图片 Mat src, dst; src = imread("F:/识图/底图.PNG", 1); dst = imread("logo", -1);【ps:这里需要注意的是透明度图片获取,后面的参数带-1】 第二步:缩放LogoMat zoomPrint( Mat src,float zoom) { resize(src, src, Size(0,...原创 2017-11-29 10:18:05 · 4595 阅读 · 2 评论 -
OpenCV学习第八篇:绘制形状和文字
本章知识点: 1.使用cv::Point和cv::Scalar Point p; p.x = 10; p.y = 8; 或者 p=point(10,8);Scalar表示四个元素的向量 Scalar(a,b,c);//a=blue,b=green,c=red表示RGB三个通道2.绘制线,矩阵,圆,椭圆等基本几何形状 画线 cv::line(LINE_4\LINE_8\LINE_AA)...原创 2017-11-14 21:45:06 · 557 阅读 · 0 评论 -
OpenCV学习第七篇:调整图像亮度和对比度
我们经常遇到需要调整图片亮度和对比度的地方: Mat new image = Mat::zeros(iamge.size(),image.type()); 创建一张跟原图像大小和类型一致的空白图像,像素值初始化为0; saturate_cast(value)确保值在0-255之间; Mat.at(y,x)[index] = value每个像素点每个通道赋值 这里是测试代码:#include...原创 2017-11-13 19:24:10 · 2780 阅读 · 0 评论 -
OpenCV学习第六篇:图像混合
好快啊,都到了第六篇了,虽然以前学过图形学,学过shader,感觉接触这个也不是很吃力!加油! 主要思想: 这里主要是图像混合的几种手段,其实和shader中的是一样的,没多大区别: 方法一: 使用: addWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst); 方法二: 使用: add(src1, src2, addmap, Ma原创 2017-11-13 18:01:17 · 408 阅读 · 0 评论 -
OpenCV学习第五篇:图像操作
1.读写图像 imread可以加载指定的RGB图像 imwrite保存图像文件,类型由扩展名决定 2.读写像素 int gray = dst.at(row,col)读取指定行列的像素值 这里是代码:#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace cv;using name原创 2017-11-11 21:01:23 · 366 阅读 · 0 评论 -
OpenCV学习第四篇:Mat对象
定义:Mat对象是OpenCV2.0之后引进的图像数据结构,自动分配内存,不存在内存泄漏的问题,是面向对象的数据结构,分了两部分,头与数据部分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(S原创 2017-11-11 10:55:57 · 751 阅读 · 1 评论 -
OpenCV学习第三篇:图片的掩膜操作(实现图像的对比度调整)
掩膜操作实现图像的对比度调整 矩阵的掩膜操作十分简单,根据掩膜来重新计算每个像素的像素值,掩膜(mask也被称为kernel) I(i,j) = 5* I(i,j)-[I(i-1,j)+I(i+1,j)+I(i,j-1)+I(i,j+1)] 我们的核心思想是对图片中的每个像素都做此操作,就是进行上面的公式! —–分解形式 —–使用内置掩膜函数 利用getTickCount...原创 2017-11-10 21:30:57 · 4973 阅读 · 0 评论 -
OpenCV学习第二篇:加载,修改和保存图像(复习)
1.加载图像:cv::imread imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件的名称 第二个参数,表示加载的图像是什么类型,支持常见的三个参数值 IMREAD_UNCHANGED(<0)表示加载原图,不做任何改变 IMREAD_GRAYSCALE(0)表示把原图作为灰度图像加载进来 IMREAD_COLOR(>0)表示把原图作为RGB图像加载进来 PS:原创 2017-11-10 20:18:52 · 597 阅读 · 1 评论 -
OpenCV学习第十五篇:基本阈值操作
图像阈值(threshold):阈值是什么?简单点说就是图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型(Binarysegmentation)阈值类型----阈值二阈值化(threshold binary)左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值阈值类型----阈值反二值化(threshold binary Inverte原创 2018-01-09 16:29:28 · 543 阅读 · 0 评论