opencv
文章平均质量分 75
mark-puls
但愿歧途同归,我与你讲来时的路
展开
-
Windows下基于VS2010 + opencv实现拉普拉斯金字塔融合算法(图像融合)
1、算法原理如下:(1)、首先建立两幅图像高斯金字塔,然后建立一定层数的拉普拉斯金字塔。拉普拉斯金字塔的层数越高,融合效果越好。层数N作为一个参数。(2)、传入一个mask掩膜,代表了融合的位置。比如说想在两图的中间进行融合,那么掩膜图像的左半为255,右半为0,反过来是一样的。根据这个mask建立一个高斯金字塔,用于后续融合,层数为N+1。(3)、根据mask将两幅图像的拉普拉斯金字塔的图像进行相加,mask为权值。相加的结果即为一个新的金字塔。同时,两幅图像的高斯金字塔的N+1层也进行这个操作,原创 2021-07-30 16:08:50 · 424 阅读 · 0 评论 -
Qt与OpenCV图像的压缩与传输
1、Qt版本: 6.2MB 压缩成 170KB, 49倍(1)、发送方QImage image("/home/maya/Desktop/image/IMG00054.BMP");QBuffer buf;buf.open(QIODevice::ReadWrite);image.save(&buf,"JPG"); //用于直接将 image 压缩后 保存在 QByteArray 中...原创 2019-11-12 17:19:36 · 1135 阅读 · 0 评论 -
opencv基础_14(自定义线性滤波)
1、卷积概念(1)、卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。(2)、Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)。2、卷积如何工作(1)、把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。数学表达如下:Sum = 8x1+6x1+6x1...原创 2019-11-08 21:53:30 · 257 阅读 · 0 评论 -
opencv基础_14(基本阈值操作)
1、图像阈值(threshold)阈值 是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型。(Binary segmentation)2、阈值类型一阈值二值化(threshold binary)左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值 3、阈值类型一阈值反二值化(threshold binary Inverte...原创 2019-11-07 22:56:57 · 223 阅读 · 0 评论 -
opencv基础_13(图像上采样和降采样)
1、图像金字塔概念(1)、我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔(2)、一个图像金字塔式一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就想一个古代的金字塔。2、图像金字塔概念(1)、高斯金子塔 – 用来对图像进行降采样...原创 2019-11-06 22:24:39 · 302 阅读 · 0 评论 -
opencv基础_12(形态学操作应用-提取水平与垂直线)
1、原理方法 图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。- 膨胀,输出的像素值是结构元素覆盖下输入图像的最大像素值- 腐蚀,输出的像素值是结构元素覆盖下输入图像的最小像...原创 2019-11-05 21:24:01 · 319 阅读 · 0 评论 -
VS2010 + opencv2.4.10实现图像拼接
1、简介 图像拼接技术就是将数张有重叠部分的图像(可能是不同时间、不同视角或者不同传感器获得的)拼成一幅无缝的全景图或高分辨率图像的技术。2、图像拼接处理步骤 图像配准(image alignment)和图像融合是图像拼接的两个关键技术。图像配准是图像融合的基础,而且图像配准算法的计算量一般非常大,因此图像拼接技术的发展很大程度上取决于图像配准技术的创新。早期的图像配准技术主要采用...原创 2019-11-04 15:50:56 · 852 阅读 · 0 评论 -
opencv基础_11(形态学操作)
1、开操作- open(1)、开操作:就是先做腐蚀后再做膨胀。(2)、作用是可以去掉图像的中小的不想要的对象(假设对象是前景色,背景是黑色)。腐蚀是把图中小的白点去电,膨胀是把图中大打矩形还原回来。2、闭操作-close(1)、闭操作:就是先做膨胀后再做腐蚀。(2)、作用是可以填充小的洞(Fill hole)(可以填充小的洞(fill hole),假设对象是前景色,背景...原创 2019-11-03 12:10:58 · 195 阅读 · 0 评论 -
opencv基础_10(膨胀与腐蚀)
1、形态学操作(morphology operators)-膨胀(1)、图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学。(2)、形态学有四个基本操作:腐蚀、膨胀、开、闭。(3)、膨胀与腐蚀是图像处理中最常用的形态学操作手段。2、形态学操作-膨胀跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计...原创 2019-11-01 22:49:18 · 152 阅读 · 0 评论 -
opencv基础_9(模糊图像二)
1、图像滤波(1)、中值滤波(2)、双边滤波2、中值滤波(1)、统计排序滤波器。(2)、中值对椒盐噪声有很好的抑制作用。中值滤波就是取3x3领域的9个像素值,按从小到大排序,取中间那个数作为3x3矩阵中心点的像素值。所以上面图片演示的3x3领域的中值是124,把150替换为124。3、双边滤波(1)、均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均...原创 2019-10-31 20:55:16 · 155 阅读 · 0 评论 -
opencv基础_8(模糊图像一)
1、模糊原理(1)、Smooth/Blur 是图像处理中最简单和常用的操作之一。(2)、使用该操作的原因之一就为了给图像预处理时候减低噪声。(3)、l使用Smooth/Blur操作其背后是数学的卷积计算。(4)、通常这些卷积算子计算都是线性操作,所以又叫线性滤波。假设有6x6的图像像素点矩阵。卷积过程:6x6上面是个3x3的窗口,从左向右,从上向下移动,黄色的每个像...原创 2019-10-28 21:09:45 · 183 阅读 · 0 评论 -
opencv基础_7(绘制形状与文字)
1、绘制形状与文字(1)、使用cv::Point与cv::Scalar。(2)、绘制线、矩形、园、椭圆等基本几何形状。(3)、随机生成与绘制文本。(4)、代码演示。2、使用cv::Point与cv::Scalar(1)、Point表示2D平面上一个点x,y Point p; p.x = 10; ...原创 2019-10-27 14:27:37 · 175 阅读 · 1 评论 -
opencv基础_6(调整图像亮度与对比度)
1、理论(1)、图像变换可以如下: ——像素变换 --- 点操作。 ——领域操作 --- 区域。 调整图像亮度和对比度属于像素变换---点操作 2、opencv重要API(1)、Mat new_image = Mat::zeros( image.size(), image.type(...原创 2019-10-21 21:14:40 · 342 阅读 · 0 评论 -
opencv基础_4(图像操作)
1、图像操作。(1)、读写图像(2)、读写像素(3)、修改像素2、读写图像(1)、imread 可以指定加载为灰度或者RGB图像(2)、imwrite 保存图像文件,类型由扩展名决定3、读写像素(1)、读一个GRAY像素点的像素值(CV_8UC1)Scalar intensity = img.at<uchar>(y, x); 或者 Scalar inte...原创 2019-10-20 16:38:18 · 195 阅读 · 0 评论 -
opencv基础_3(Mat数据结构剖析)
1、Mat对象与IplImage对象。(1)、Mat对象是OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分。其中头部有图像宽度、高度和通道等,数据不有data等。(2)、IplImage是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内...原创 2019-10-19 11:39:34 · 169 阅读 · 0 评论 -
opencv基础_2(图像的掩膜操作)
1、获取opencv图像(Mat)指针。(1)、Mat.ptr<uchar>(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。(2)、获得当前行指针const uchar* current= myImage.ptr<uchar>(row )。(3)、获取当前像素点Point(row, col)的像素值 Point(row, col) =...原创 2019-10-18 22:13:23 · 735 阅读 · 0 评论 -
opencv基础_1(加载、修改、保存图像)
1、加载图像:Mat imread( const String& filename, int flags = IMREAD_COLOR )。功能:imread()功能是加载图像文件成为一个Mat对象。filename:第一个参数表示图像文件名称flags :第二个参数,表示加载的图像是什么类型,支持常见的三个参数值IMREAD_UNCHANGED (<0) 表示加载原图,不...原创 2019-10-17 22:45:07 · 141 阅读 · 0 评论 -
opencv基础(2)——利用ROI实现图像叠加
1、简介ROI(region of interest),感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。在Halcon、OpenCV、Matlab等机器视觉软件上常用到各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。2、代码演示 //加载图像1和图2 Mat ...原创 2018-09-29 15:45:58 · 759 阅读 · 0 评论 -
opencv基础(3)——cvFindContours提取轮廓
1、findContours函数原型以及参数介绍void findContours( InputOutputArray image, //输入图像,必须是8位单通道图像,并且应该转化成二值的 OutputArrayOfArrays contours, //检测到的轮廓,每个轮廓被表示成一个point...原创 2018-10-21 18:46:36 · 1826 阅读 · 0 评论 -
opencv基础(4)——腐蚀 / 膨胀 / 中值 / 均值 / 边缘滤波 / 灰度二值化
1.腐蚀#include <cv.h>#include <highgui.h>#include <cvblob.h>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;int main(){ //1加载原图 Mat matSrc=...原创 2018-10-24 16:46:36 · 734 阅读 · 0 评论 -
Ubuntu下QT使用openc编译没问题,但是运行时提示找不到库文件
问题提示:ibopencv_core.so.3.2: cannot open shared object file: No such file or directmark:每次重新装机都会遇到这个问题,这次把解决过程记录下来,方便以后查看解决办法步骤如下:1、打开终端进到目录 /etc/ld.so.conf.dcd /etc/ld.so.conf.d2、在/etc/ld.s...原创 2018-11-28 21:29:56 · 1174 阅读 · 0 评论 -
opencv基础(5)——画图操作line()/arrowedLine()/rectangle()/circle()/fillConvexPoly()/drawContours()/putText()
opencv提供了很多绘图函数,这些函数可以把想要的图形直接画到图像,这些函数分别为line()画直线\arrowedLine()带形状直线\rectangle()画矩形\circle()画圆\ellipse()画椭圆\fillConvexPoly()填充多边形\drawContours()画轮廓\putText()显示文字.下面一次介绍这些函数的用法---------------------...原创 2018-11-26 16:50:54 · 4450 阅读 · 0 评论 -
基于opencv实现字符分割(直方图投影法)
一 实现步骤1. 使用imread()加载原图2. 对原图进行二值化3. 统计垂直方向和水平方向的直方图4. 把直方图投影到Mat上5. 从直方图分割字符二 关键代码1 加载原图void MainWindow::on_tbImagePath_clicked(){ //选择原图 QFileDialog dlg(this, tr("打开文件"), ho...原创 2018-12-18 22:14:58 · 5576 阅读 · 0 评论 -
求某个像素点的X、Y方向的索贝尔值(Sobel)
原创 2019-03-04 10:07:18 · 884 阅读 · 0 评论 -
HCION的HObject与Opencv的Mat互相转换
1、opencv的Mat 转 HaIcon的HObjectHObject Mat2HObject(const Mat &matSrc){ int w = matSrc.cols; int h = matSrc.rows; HObject Hobj = HObject(); //创建HObject对象,把Mat的data数据转到这个对象的内存 if (...原创 2019-08-06 11:45:11 · 706 阅读 · 0 评论 -
opencv基础(1)——图像读、写、显示
opencv简介:OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保...原创 2018-09-28 13:10:54 · 304 阅读 · 0 评论