图像处理--Opencv
文章平均质量分 54
高祥xiang
兴趣和努力伴随着我一直走下去,keep,Never give up!
展开
-
Opencv 解决BGR转YUV调用cvtColor函数程序崩溃问题
将cv::Mat BGR格式转YUV格式时调用cvtColor函数导致程序崩溃原创 2024-08-09 15:49:08 · 206 阅读 · 1 评论 -
qt5 遇到fatal error C1083: 无法打开包括文件: “opencv2/opencv.hpp
首先在opencv配置正确的情况下,出现此情况主要是因为在引入opencv时可能没有重新构建。首先可以尝试点击 构建项目, 然后运行,如果不行。我们重新执行一下qmake,然后运行,就能成功了。提醒一下,这只是一部分这种类型的错误解决方法,如果是开始时配置路径出错,可以查看配置路径文章。...转载 2021-12-25 23:45:03 · 2038 阅读 · 0 评论 -
win10 编译cuda版OpenCV
一、环境win10系统 + vs2017 + opencv3.4.15 +cuda11.1 + cmake注:我本来用的是 opencv3.4.7,然后查了很多教程尝试都未成功,一直报错:CMake Error: The following variables are used in this project, but they are set to NOTFOUND.Please set them or make sure they are set and tested correctl.原创 2021-09-14 16:33:31 · 1561 阅读 · 1 评论 -
Anaconda+opencv-python安装教程
import cv2时报错“no module names cv2”,时因为没有安装opencv-python导致的问题。前提:已经安装了Anaconda环境Opencv-python下载地址根据自己的python版本下载相对于的opencv版本: 比如我的是python3.7,64位系统,就下载opencv_python-3.4.5.20-cp37-cp37m-win_amd64.whl打开Anaconda Prompt(Anaconda3),激活项目所关联的仓库环境,进...原创 2021-08-31 11:59:20 · 6508 阅读 · 0 评论 -
OpenCV 网络url图像路径转OpenCV Mat
一、简述OpenCV中imread() 读取图像函数是不可以载入图像的网络url路径的,如果想要将网络url图像加载并转成mat数据格式,那么还需要借助第三方网络库curl。二、环境windows 10 + vs2017 + opencv3.4.7 + curl-7.78.0 + cmake三、安装curl1、curl简介libcurl是免费的客户端URL传输库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LD原创 2021-08-30 19:43:42 · 1184 阅读 · 1 评论 -
OpenCV Mat与Base64编码图像数据的相互转换(转)
这里我直接给出代码:static std::string base64Decode(const char* Data, int DataByte) { //解码表 const char DecodeTable[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,转载 2021-08-28 18:07:33 · 2287 阅读 · 0 评论 -
OpenCV + OpenCV Contrib安装教程(windows)
一、OpenCV Contrib模块简介OpenCV Contrib是OpenCV的扩展模块,包含了许多最新的以及可能还没有正式发布有待进一步完善的算法,可以理解为是OpenCV的扩展包,在OpenCV 3.0以后,SIFT、SURF等特征算法也放到了Contrib库中了,我第1次安装Contrib,是因为想要使用FLD直线检测器。二、本文介绍的安装环境Windows 10 + vs2017 x64 + OpenCV3.4.3 + OpenCV Contrib3.4.3 + Cma...原创 2020-08-25 16:54:32 · 29751 阅读 · 19 评论 -
自适应阈值图像二值化
一、二值化关于二值化的介绍,以前的博客中有介绍,这里就不再描述了,二值化介绍;二值化分为固定阈值二值化和自适应阈值二值化,固定阈值二值化方式是我们常用的二值化方式,需要自己摸索一个经验阈值,不断调整,直到找到最佳阈值,这种方式在刚刚的链接中已经介绍;而这篇文档主要介绍的就是另一种二值化方式:自适应阈值二值化。二、自适应阈值二值化图像进行二值化,且做到自适应阈值参数,有4种自适应阈值二值化方法;先从自适应阈值的作用范围来区分,自适应阈值分为:全局阈值使用自适应全局阈值的全局二值化方法有:大津原创 2020-08-13 16:08:24 · 15675 阅读 · 0 评论 -
OpenCV 霍夫变换(直线检测、圆检测)
#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace cv;using namespace std;int main(int argc, char** argv){ Mat src, src_gray, dst; src = imread("test1.jpg"); char INPUT_TITLE[] ...转载 2020-08-06 16:54:43 · 320 阅读 · 0 评论 -
RGB的颜色本质
1、相加混色RGB是色度的三种基色,三种基色是相互独立的,任何一种基色都不能有其它两种颜色合成。这三种颜色合成的颜色范围最为广泛,按照不同的比例相加合成混色称为相加混色。 红色+绿色=黄色 绿色+蓝色=青色 红色+蓝色=品红 红色+绿色+蓝色=白色黄色、青色、品红都是由两种基色相混合而成,所以它们又称相加二次色。2、互补色 红色+青色=白色 绿色+品红=白色 蓝色+黄色=白色所以青色、黄色、品红分别又是红色、蓝色、绿色的补色。由于每个人的眼睛对于相同原创 2020-07-30 09:38:21 · 3258 阅读 · 0 评论 -
OpenCV HSV颜色空间
HSV是一种比较直观的颜色模型,这个模型中颜色的参数分别是:色调(H, Hue),饱和度(S,Saturation),明度(V, Value)。1、色调(H)用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;2、饱和度(S)饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就原创 2020-07-30 09:21:53 · 1768 阅读 · 0 评论 -
OpenCV 二值化
一、简述图像二值化(Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。二、原理将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要原创 2020-07-29 13:57:35 · 8133 阅读 · 0 评论 -
OpenCV 神经网络 - 多层感知器(MLP)
一、简述人工神经网络(ANN) 简称神经网络(NN),能模拟生物神经系统对物体所作出的交互反应,是由具有适应性的简单单元(称为神经元)组成的广泛并行互连网络。二、M-P神经元“M-P神经元模型”(McCulloch and Pitts,1943)是开创性的人工神经元模型,将复杂的生物神经元活动通过简单的数学模型表示出来,提出最早且影响最大。如下图所示,来自其它神经元的信号,,传递过来作为输入信号,并通过带权重的连接 (connection) 继续传递,然后神经元的总输入值与阈值θ...原创 2020-07-28 10:39:23 · 4256 阅读 · 0 评论 -
OpenCV 将OpenCV环境嵌套在C++项目中
概述这是以前写的项目总结,今天发出来。使用vs2010创建的opencv C++项目,配置好OpenCV,当项目发给同事使用,还需要配置opencv路径,这样就有点麻烦了!有种方法方式,可以省去这个配置的麻烦(前提同事使用的也是vs2010)。方法在项目的根目录创建两个文件夹,分别是thirdparty、lib 。thirdparty文件夹中放置opencv中头文件两个目录,如图1...原创 2020-03-06 14:20:02 · 1478 阅读 · 0 评论 -
相机帧率和曝光时间的关系
工业相机参数之帧率相关知识详解工业相机是机器视觉系统的重要组成部分之一,在机器视觉系统中有着非常重要的作用。工业相机已经被广泛应用于工业生产线在线检测、智能交通,机器视觉,科研,军事科学,航天航空等众多领域。工业相机的主要参数包括:分辨率、帧率、像素、像元尺寸、光谱响应特性等。下面我们来对工业相机帧率的相关知识进行讲解: 帧率(Frame rate)是用于测量显示帧数的量度。所谓的...转载 2020-02-21 22:31:35 · 5252 阅读 · 3 评论 -
opencv Mat介绍
Mat简介OpenCV1中存储图像是基于C接口定义的图像存储格式IplImage*,它的缺点是直接暴露内存。如果忘记释放内存,就会造成内存泄漏。但是从OpenCV2开始,使用Mat类来存储图像,它的优势如下:(1)图像内存分配和释放由Mat类自动管理。(2)Mat类由两部分数据组成:矩阵头(包含矩阵尺寸、存储方法、存储地址等)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同,...原创 2019-12-26 19:55:54 · 572 阅读 · 0 评论 -
Qt OpenCV读取资源中图片
简介在 Qt 中图片资源文件路径为 “:/xxx/xxx/xxx.png”这种格式,而使用 OpenCV 的 imread() 函数是无法直接用这样的路径读取图像的。如果想要使用 OpenCV 的 imread() 函数读取 Qt 中的图片资源文件,需要先将图片读取到QByteArray 数组中,然后使用 imdecode 函数实现读取。示例QFile file(":/image...原创 2019-12-23 15:52:29 · 1164 阅读 · 0 评论 -
OpenCV 随机数
简介产生随机数是编程中经常用到的操作,特别在进行初始化的时候需要赋一些随机值。C和C++中产生随机数的方法如rand()、srand()等在OpenCV中仍可以用。此外,OpenCV还特地编写了C++的随机数类RNG,C的随机数类CvRNG,还有一些相关的函数,使用起来更加方便。下面,一一介绍。说明关键字前带cv的都是C里的写法,不带cv的是C++里的写法,比如CvRNG和RNG,其本...转载 2019-12-23 15:31:33 · 1862 阅读 · 0 评论 -
OpenCV 图像中高频信息、低频信息
低频低频就是颜色缓慢变化,也就是灰度缓慢地变化,就代表着那是连续渐变的一块区域,这部分就是低频。对于一副图像来说,除去高频就是低频了,也就是边缘以内的内容为低频,而边缘内的内容就是图像的大部分信息,即图像的大致概貌和轮廓,是图像的近似信息。高频反之,高频即频率变化快,图像什么时候灰度变化快?就是相邻区域之间灰度相差很大,这就是变化快。图像中,一个影像与背景的边缘部分,通常会有...转载 2019-12-23 14:25:30 · 2953 阅读 · 0 评论 -
opencv imshow函数详解
前言使用opencv对图像进行处理之后,通常调用imshow函数来显示处理结果。但是,我们经常会发现显示结果和我们预期的结果有些差别。这是由于opencv经常会涉及到对多种图像数据类型的处理,如果我们对图像数据类型之间的转换以及imshow函数理解不够透彻,那么显示结果则不会尽如人意。imshow函数详解对于imshow函数,opencv的官方注释指出:根据图像的深度,imshow函数...转载 2019-12-21 12:09:56 · 3062 阅读 · 1 评论 -
opencv convertScaleAbs函数原理
函数释义范围内,计算绝对值,并将结果转换为8位。函数原型void convertScaleAbs(InputArray src, OutputArray dst, double alpha=1, double beta=0)Parameters: src– Source array. dst– Destination array. alpha...原创 2019-12-21 11:49:40 · 5319 阅读 · 0 评论 -
opencv 泊松融合
图像融合简介图像融合(Image Fusion)是指将多源信道所采集到的关于同一目标的图像数据经过图像处理和计算机技术等,最大限度的提取各自信道中的有利信息,最后综合成高质量的图像,以提高图像信息的利用率、改善计算机解译精度和可靠性、提升原始图像的空间分辨率和光谱分辨率,利于监测。在图像处理中,图像融合是一个基本的处理操作,目的是将源图像中一个物体或者一个区域嵌入到目标图像而生成一个新的图...原创 2019-11-08 16:25:26 · 2092 阅读 · 0 评论 -
opencv Windows+opencv+Qt环境配置【注意:是MinGW】
工具:CMake:3.8.2OpenCV:3.0.0(测试了下3.1.0与3.2.0也可以)QT:5.8.0MinGW:5.3.0系统: WIndows 10开始1. OpenCV下载完解压到某一文件夹:2.CMake.选择source文件以及输出的文件路径。这里的source文件就是下载opencv解压后的文件路径,而第二个build路径可以自己选择放在哪个文件夹...转载 2019-10-29 16:13:52 · 759 阅读 · 0 评论 -
QT QImage 与 Opencv的Mat 之间互转
1、QImage 转 Matcv::Mat QImageToMat(QImage image){ cv::Mat mat; switch (image.format()) { case QImage::Format_ARGB32: case QImage::Format_RGB32: case QImage::Format_ARGB32_Premultiplied: mat...转载 2019-10-29 15:37:33 · 486 阅读 · 0 评论 -
opencv 图像金字塔及图像重建、融合
一、图像金字塔关于图像金字塔的介绍,这里推荐一篇毛星云写的博客OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放,是基于《OpenCV3编程入门》中图像金字塔部分编写,基础概念信息介绍很详细。这篇文章是针对基本的图像金字塔介绍再详细描述。图像高斯金字塔图像高斯金字塔是对一张输入图像先模糊再下采样为原来宽高的1/2(宽高缩小一半)、不断重复模糊向下采样的过程就得到了不同分...原创 2019-07-31 10:04:39 · 4327 阅读 · 0 评论 -
QT opencv读取视频数据,QLabel实时显示图像(定时器)
简述使用 Qt 做一个实时显示视频的Demo,这里结合Opencv来做的。该视频可以是从摄像头实时获取的数据,也可以是本地保存的视频数据。简述下思路:使用 QT 做一个文件选择器,选择本地视频; 使用opencv读取该视频数据,将视频分解成一帧一帧的图像; 利用定时器,定时的调用显示图像接口。(这里使用QLabel显示每一帧图像;定时器的时间与视频的帧率有关;);注:这里注重说...原创 2019-05-28 14:51:01 · 12484 阅读 · 8 评论 -
opencv imread()方法第二个参数介绍
简述使用imread()方法读取图像这个操作是我们做opencv图像处理时经常用到的方法,此方法的原型是:imread(const string& filename, int flag=1)filename指图像名称,flag指读取图像颜色类型。这张图中所介绍的就是flag的所有可能值。flag默认为1,即读取为彩色图像,如果要读取为灰度图(单通道),只需要把flag...原创 2018-11-28 18:02:24 · 18894 阅读 · 2 评论 -
opencv Mat矩阵相乘、点乘、dot、mul运算详解
Mat矩阵点乘 -- A*BOpencv重载了运算符“*”,姑且称之为Mat矩阵“点乘”,其中一个重载声明为:CV_EXPORTS MatExpr operator * (const Mat& a, const Mat& b);点乘说明:1. A*B是以数学运算中矩阵相乘的方式实现的,即Mat矩阵A和B被当做纯粹的矩阵做乘法运算,这就要求A的列数等 ...转载 2019-07-31 14:48:47 · 2881 阅读 · 1 评论 -
opencv 白平衡之灰度世界算法
简述OpenCV对图像进行处理时,有时图像RGB受光照影响比较严重,转换到HSV等空间也解决不了时,可以用白平衡算法进行修正,使其发黄、发蓝、发红的照片更加趋于自然光下的图像。白平衡算法有很多种,其中常用的有灰度世界法和镜面法。色彩是人眼的对可视光的一种感知。对于不透明的物体而言,人眼所形成的色彩感知取决于光照光谱分布、物体表面光的反射性和人眼(或者其它光信号接收器)的光敏特性。在光信...原创 2019-08-02 11:34:31 · 1360 阅读 · 0 评论 -
opencv 多种边缘检测算法及各自的优缺点
边缘提取其实也是一种滤波,不同的算子有不同的提取效果。比较常用的方法有三种,Sobel算子,Laplacian算子,Canny算子。Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,sobel算子对边缘定位不是很准确,图像的边缘不止一个像素;当对精度要求不是很高时,是一种较为常用的边缘检测方法。 Canny方法不容易受噪声干扰,能够检测到真正的弱边缘。优点在于,使用两种不...转载 2019-08-27 23:41:20 · 4880 阅读 · 0 评论 -
opencv Ubuntu16.04+Opencv3.4.5+QT5.7.1环境配置
环境ubuntu16.04 + Opencv3.4.5 + Qt5.7.1一 、安装QT1、下载 qt-opensource-linux-x64-5.7.1.run ,下载地址在我的另一篇博客中介绍了,点击链接。2、如果 qt-opensource-linux-x64-5.7.1.run 不能运行,没有执行权限,需要先给它赋值权限,然后再运行它:sudo chmod u...原创 2019-09-09 20:24:31 · 1004 阅读 · 3 评论 -
ubuntu 已编译好的opencv重新配置到新的主机中
环境ubuntu16.04 + Opencv3.4.5 + Qt5.7.1简述在 ubuntu 中做有关 opencv 的项目时,害怕搭建环境,因为搭建环境会花去很多时间和精力,这里自己总结了一种可以省去一些配置环境的时间和精力。 前提是第一次将 opencv 编译好,以后直接重新配置到新的主机中即可。一、前提在其中一台主机中编译好 opencv3.4.5 ,编译和配置...原创 2019-09-09 20:43:58 · 1178 阅读 · 2 评论 -
QT QImage、QPixmap与Opencv 中的Mat相互转化
简述我们使用QT和opencv的过程中经常会碰到这样的问题:Mat怎么转化位QImage?Mat怎么转化为QPixmap?今天我来告诉大家一个比较好的解决方案(以下代码参考了别人的,增加了一些修改)代码#include <QDebug>#include <QImage>#include <QPixmap>#include "opencv2/...转载 2019-05-28 14:00:16 · 4428 阅读 · 0 评论 -
opencv “VideoCapture读取视频,isOpened() 返回总是false”问题解决
用 opencv 中 VideoCapture 类读取视频,isOpened() 返回总是false,一般有以下几点原因:1、查看视频路径是否存在问题;2、查看视频文件是否可以正常打开,是否是视频出现损坏情况;3、处理视频时,会依赖 opencv_ffmpeg2413.dll ,所以将 opencv_ffmpeg2413.dll 拷贝到 exe 执行文件目录下,就可以正常运行了。...原创 2019-05-30 17:19:47 · 19108 阅读 · 10 评论 -
opencv getRectSubPix()函数
函数作用从原图像中提取一个感兴趣的矩形区域图像。函数原型C++: void getRectSubPix(InputArray image, Size patchSize, Point2f center, OutputArray dst, int patchType=-1 )参数解释InputArrayimage:输入图像SizepatchSize:获取感兴趣区域矩形...原创 2019-03-28 17:11:40 · 5054 阅读 · 0 评论 -
opencv 形态学图像处理:膨胀与腐蚀
本系列文章由@浅墨_毛星云 出品,转载请注明出处。 文章链接: http://blog.csdn.net/poem_qianmo/article/details/23710721作者:毛星云(浅墨) 邮箱: happylifemxy@163.com 写作当前博文时配套使用的OpenCV版本: 2.4.8本篇文章中,我们一起探究了图像处理中,最基本的形态学运算——膨胀...转载 2018-12-07 14:16:29 · 601 阅读 · 0 评论 -
opencv 轮廓提取findContours和drawContours
最近用OPENCV的轮廓提取函数,总结一下。void findContours//提取轮廓,用于提取图像的轮廓( InputOutputArray image,//输入图像,必须是8位单通道图像,并且应该转化成二值的 OutputArrayOfArrays contours,//检测到的轮廓,每个轮廓被表示成一个point向量 OutputArray hierar...转载 2018-12-03 17:52:59 · 1552 阅读 · 0 评论 -
opencv 详谈Mat两种拷贝
简述Mat是OpenCV最基本的数据结构,Mat即矩阵(Matrix)的缩写,Mat数据结构主要包含2部分:Header和Pointer。Header中主要包含矩阵的大小,存储方式,存储地址等信息;Pointer中存储指向像素值的指针。在复制图像时,有两种情况,一种是浅拷贝,一种是深拷贝。所谓浅拷贝仅仅是引用,即创建了一个新的矩阵头,仍然指向原来的数据空间。而所谓的深拷贝,是指完全创建一整...原创 2018-12-03 14:17:17 · 1994 阅读 · 0 评论 -
vs2010出现编译错误 fatal error C1189: #error : Need to include strsafe.h after tchar.h
简述vs2010出现编译错误 fatal error C1189: #error : Need to include strsafe.h after tchar.h解决方法在头文件中最上边加上#include "windows.h"#include <tchar.h>原创 2018-12-03 11:00:11 · 2086 阅读 · 0 评论 -
VS2010中调用DirectShow的错误—typedef void * POINTER_64 PVOID64
简述VS2010(其他版本也适用)调用DirectShow的错误—typedef void * POINTER_64 PVOID64 或者 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)。解决方法在“包含目录”下,将继承的值全部重新加入一次,并且将DirectShow的包含目录放置前面。...原创 2018-12-03 10:58:13 · 408 阅读 · 0 评论