
opencv
榴莲小怪兽
所有文章仅仅提供给自己做记录贴用,不足之处欢迎指正
展开
-
ubuntu 安装ImageWatch插件
原文地址 :https://www.ours1984.top安装步骤1、依赖项安装ImageWatch需要调试器来调用插件编译过程中需要用到qt5库sudo apt-get install gdb qt5-default2、ImageWatch编译git clone https://github.com/csantosbh/gdb-imagewatchcd gdb-imagewatchsudo ./configure_ubuntu_16.sh3、设置QtCreator调用Qt-转载 2022-03-04 14:09:18 · 1059 阅读 · 0 评论 -
OpenCV-矩阵运算总结
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:cvvision链接:http://www.cvvision.cn/273.html来源:CV视觉网 一、矩阵Mat I,img,I1,I2,dst,A,B;double k,alpha;Scalar s;1.加法I=I1+I2;//等同add(I1,I2,I);add(I1,I2,dst,mask,dtype);scaleAdd(I1,scale,I2,dst);//dst=scale*I1+I2;2.减转载 2020-09-27 11:58:45 · 246 阅读 · 0 评论 -
OpenCV- reduce 函数
最近在对矩阵的每一列进行求和时,发现了一个函数cv::reduce(),该函数将我原本的的循环遍历操作代码量减少至了一行函数调用.(一)说明:该函数的作用是将二维数组转化为向量。参数说明:src:输入矩阵dst:通过处理输入矩阵的所有行/列而得到的单行/列向量dim:矩阵被简化后的维数索引.0意味着矩阵被处理成一行,1意味着矩阵被处理成为一列,-1时维数将根据输出向量的大小自动选择.op:简化操作的方式,可以有以下几种取值:注意reduce的输入与输出关系:cv::reduce for转载 2020-09-27 10:50:16 · 1417 阅读 · 0 评论 -
opencv-实现双线性插值
双线性源码:https://blog.youkuaiyun.com/love_image_xie/article/details/87969405五个都有的:https://blog.youkuaiyun.com/carson2005/article/details/22417587opencv自带的函数:void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINE转载 2020-07-24 17:38:41 · 3546 阅读 · 2 评论 -
opencv-sift特征点匹配
https://ask.youkuaiyun.com/questions/237961////简单的sift配准测试#include <iostream>#include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp>using namespace cv; //包含cv命名空间using namespace std;int main() { //Create SIFT class pointer转载 2020-07-17 10:49:52 · 1480 阅读 · 0 评论 -
OpenCV-选取roi区域,任意形状(矩形,不规则多边形,圆形,椭圆,手动指定形状)
转载:http://blog.youkuaiyun.com/wangyaninglm/article/details/43853435转载 2020-07-06 16:58:27 · 3640 阅读 · 0 评论 -
OpenCV-进行图像相似度对比的几种办法
https://blog.youkuaiyun.com/u013105205/article/details/78835969/转载 2020-06-29 16:42:58 · 964 阅读 · 0 评论 -
Opencv- 寻找平面图形的质心
https://blog.youkuaiyun.com/luohenyj/article/details/88599334(一)单个blob的质心寻找#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/opencv.hpp>#include <iostrea转载 2020-06-29 15:40:47 · 1287 阅读 · 0 评论 -
opencv-形态学操作
原文链接:https://blog.youkuaiyun.com/LqSilence/article/details/101676157void morphologyEx( InputArray src, OutputArray dst, int op, InputArray kernel )Mat src:输入图像Mat dst:输出图像int op:形态学操作类型CV_MOP_OPEN:开操作CV_MOP_CLOSE:闭操作CV_MO转载 2020-06-28 09:53:31 · 841 阅读 · 0 评论 -
opencv-自定义色带产生类似jet的效果
/*!*@brief 自定义伪彩图颜色*/Mat ColorMap(const Mat &img1, Mat &color) { //具体算法,主要思路是把灰度图对应的0~255的数值分别转换成:红、橙、黄、绿、青、蓝。 //低值为蓝色高值为红色 Mat img; img1.copyTo(img); uchar tmp2 = 0; Mat img_color(img.rows, img.cols, CV_8UC3);#define I原创 2020-06-22 15:38:51 · 1136 阅读 · 0 评论 -
OpenCV-常用滤波函数
在图像处理中,尽可能消除图片中的噪声,消除噪声就需要用到滤波,在本次opencv学习中,学习了三个滤波方式。(1)平均滤波,就是将一个区域内的像素值求和取平均值,然后用这个平均值替换区域中心的像素值。blur(源Mat对象,目标Mat对象,Size对象,Point对象)//Size对象用来确定区域大小,Point对象如果x,y都是-1则表示更新区域中心的像素。(2)高斯滤波,也是将一个区域的像素值求取平均值替换区域中心的像素值,但是是加权平均,权重按照二维正态分布。GaussianBlur(源Mat转载 2020-06-17 14:24:05 · 4930 阅读 · 1 评论 -
opencv-Mat矩阵的合并与拼接
链接:https://blog.youkuaiyun.com/birenxiaofeigg/article/details/88847446opencv有自带函数:vconcat和hconcat函数,用于矩阵的合并与图像的拼接。 vconcat(B,C,A); // 等同于A=[B ;C]上下叠加 hconcat(B,C,A); // 等同于A=[B C]其实不用这两个函数,在C++中也可以自己轻松实现Mat矩阵的合并:Mat posMat = Mat::zeros(posNo, colsNo, CV_3转载 2020-06-16 16:43:39 · 3258 阅读 · 0 评论 -
opencv-图片矫正
转载:https://www.jianshu.com/p/a1838972d1da对于倾斜的图片通过矫正可以得到水平的图片。一般有如下几种基于opencv的组合方式进行图片矫正。1、傅里叶变换 + 霍夫变换+ 直线 + 角度 + 旋转2、边缘检测 + 霍夫变换 + 直线+角度 + 旋转3、四点透视 + 角度 + 旋转4、检测矩形轮廓 + 角度 + 旋转#include <open...转载 2020-05-28 09:18:46 · 2537 阅读 · 0 评论 -
使用opencv中K-Means方法进行基于像素值的图像分割和背景替换
https://blog.youkuaiyun.com/ganwenbo2011/article/details/90577122转载 2020-05-28 09:18:07 · 790 阅读 · 0 评论 -
opencv-features2d.hpp的错误
类似这样的错误In file included from /usr/include/opencv2/nonfree/nonfree.hpp:46:0, from panaroma.cpp:7:/usr/include/opencv2/nonfree/features2d.hpp:73:21: error: ‘vector’ has not been declared...原创 2020-05-28 09:16:41 · 1726 阅读 · 1 评论 -
OpenCV-对比度增强(伽马变换)
https://blog.youkuaiyun.com/weixin_45645281/article/details/105005009伽马变换的实质就是对每一个像素进行幂函数操作。C++:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <iostream>#include转载 2020-05-27 16:30:04 · 2073 阅读 · 1 评论 -
opencv —— equalizeHist 直方图均衡化实现对比度增强
直方图均匀化简介从这张未经处理的灰度图可以看出,其灰度集中在非常小的一个范围内。这就导致了图片的强弱对比不强烈。直方图均衡化的目的就是把原始的直方图变换为在整个灰度范围(0~255)内均匀分布的形式,从而增加像素灰度值的动态范围,达到增强图像整体对比度的效果。equalize 函数实现的灰度直方图均衡化算法,就是把直方图的每个灰度值进行归一化处理,求每种灰度的累积分布,接着得到一个映射的灰度映射表,然后根据相应的灰度值来修正原图中的每个像素。void equalize(InputArray转载 2020-05-27 16:09:07 · 641 阅读 · 0 评论 -
Opencv-坐标系与row&col的关系
https://blog.youkuaiyun.com/wangxuwen2/article/details/52443978?locationNum=7&fps=1注意都是相反的!之前没注意这个问题,导致我找了好久的错误!row == heigh == Point.ycol == width == Point.xMat::at(Point(x, y)) == Mat::at(y,x)因为还有点的坐标,所以建议在访问时都用Mat::at(Point(x, y))这种形式吧,免去了点坐标和行列的转转载 2020-05-22 16:48:40 · 497 阅读 · 0 评论 -
opencv--求解Mat矩阵的逆矩阵
opencv中cv::invert()可直接用来求解矩阵的逆矩阵函数原型如下:double cv::invert(InputArray src, OutputArray dst, int flags = DECOMP_LU )Parameters:src: 待求解的矩阵dst: 输出的逆矩阵flags: 求解方法////////////////////////////////////////////////详细介绍:1、src: 输入,浮点型(32位或者64位)的M×N的矩阵,当参数转载 2020-05-21 14:28:14 · 10986 阅读 · 0 评论 -
opencv-把多个单通道Mat合成一个多通道Mat
int main(){ cv::Mat m1=(cv::Mat_<int>(3,2)<<1,2,3,4,5,6); cv::Mat m2=(cv::Mat_<int>(3,2)<<2,4,6,8,10,12); cv::Mat m3=(cv::Mat_<int>(3,2)<<3,6,9,12,15,18);//方法1 cv::Mat inm[]={m1,m2,m3}; cv::Mat outm;原创 2020-05-20 11:12:53 · 1603 阅读 · 0 评论 -
傅里叶变换
详细流程:采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。DFT(FFT)的作用:可以将信号从时域变换到频域,而且时域和频域都是离散的,通俗的说,可以求出一个信号由哪些正弦波叠加而成,求出的结果就是这些正弦波的幅度和相位,参考:一维离散傅里叶变换,信号分解matlab实现:https://blog.youkuaiyun.com/qq_34917728...原创 2020-05-14 17:03:29 · 592 阅读 · 0 评论 -
opencv-保存图像自动命名
在opencv中保存多幅图像时,需要在imshow(filename,dst);语句中更改filename的名字,如果显示的图像较多,每次都要改名,很麻烦!本文首先尝试sprintf,具体如下: char file[100]; for (int i=0;i<3;i++) { //string file="lena"; sprintf(file,"%u.bmp",i+1); imshow(file,dst[i]); }本文还尝试另外一个itoa函数。实现如下:cha转载 2020-05-09 11:25:21 · 1253 阅读 · 0 评论 -
opencv-opencv2/nonfree/nonfree.hpp:没有那个文件或目录
opencv2/nonfree/nonfree.hpp:没有那个文件或目录在使用opencv时,找不到nonfree模块,即下列include错误:#include<opencv2/nonfree/nonfree.hpp>解决办法:在指令窗口输入如下指令sudo apt-get updatesudo add-apt-repository --yes ppa:xqms/o...原创 2020-05-08 16:46:10 · 4248 阅读 · 0 评论 -
OpenCV-提取图像中的颜色直方图(RGB、HSV)
主要介绍利用OpenCV工具提取一幅图像中的颜色直方图特征。所谓颜色直方图,指的是一幅图像中的颜色分布,与图像中的特定的物体无关,只是用来表示人的眼睛观察到的图像中的颜色分布情况,例如说,一幅图中红色占了多少比例,绿色占了多少比例等。我们知道,计算机色彩显示器采用R、G、B相加混色的原理,通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光而产生色彩。在RGB颜色空间中,任意色...转载 2020-04-30 15:09:15 · 4482 阅读 · 0 评论 -
opencv-鼠标拖拽选取任意形状的ROI
程序还不完善#include <iostream>#include<opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>using namespace cv;using namespace std...转载 2020-04-29 17:51:29 · 1278 阅读 · 1 评论 -
opencv-给出点,利用drawContours得到ROI
//多边形的点已经给出,两点间连直线得到ROI#include <opencv2/core/core.hpp>#include<opencv2/opencv.hpp>#include<iostream>#include <string>using namespace cv;using namespace std;int main() {...转载 2020-04-29 17:42:41 · 443 阅读 · 0 评论 -
opencv-归一化函数
1、函数原型void cv::normalize(InputArry src,InputOutputArray dst,double alpha=1,double beta=0,int norm_type=NORM_L2,int dtype=-1,InputArray mark=noArry())2.函数作用归一化数据。该函数分为范围归一化与数据值归一化。(Normalizes the n...转载 2020-04-27 12:53:37 · 2771 阅读 · 1 评论 -
0pencv- threshold函数阈值处理
*程序通过创建trackbar来控制阈值化类型*通过调节trackbar来调节*其具体阈值化类型如下:*0: THRESH_BINARY 二进制阈值化*1: THRESH_BINARY_INV 反二进制阈值化*2: THRESH_TRUNC 截断阈值化*3: THRESH_TOZERO 阈值化为0*4: THRESH_TOZERO_INV 反阈值化为0*/#include ...转载 2020-04-27 11:59:28 · 428 阅读 · 0 评论 -
opencv-详解CvMat属性type
type:表示了CvMat矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为:CV_(位数)+(数据类型)+(通道数)。具体的有以下值:这里U(unsigned integer)指的是无符号整数,S(signed integer)是有符号整数,F(float)是浮点数。 C(channels)是通道数。8和16位只能匹配数据类型U和S,32位只能匹配S和F,64...转载 2020-04-21 17:24:22 · 4071 阅读 · 0 评论 -
OpenCV-矩阵上的卷积(平滑)
在openCV官网上说是戴面具,事实上就是又一次计算一下矩阵中的每个value,那么怎么计算呢,依据该像素点的周围信息,用一个加权的公式来进行计算。那么如今就要看,周围的信息是怎样被加权的。让我们想一下这种方式,请看以下的公式:上面的公式就是根据当前像素点的值和四个邻居的值,更新一下。相当于原来矩阵每一块3*3的小矩阵和M进行乘一样。在程序中,我们对该公式进行编程的话,会是以下的代码。#i...转载 2020-04-21 17:21:16 · 758 阅读 · 0 评论 -
opencv-水平镜像两种方式
// 水平翻转(现成的函数) Mat mirrorImage; flip(gray_src, mirrorImage, 1); //对矩阵做类似于水平镜像的变换不用flip函数实现 Mat dst; dst.create(gray_src.size(), gray_src.type()); Mat map_x; Mat map_y...原创 2020-04-16 17:10:23 · 1238 阅读 · 0 评论 -
opencv-访问Mat数组里最大值和最小值以及其坐标
void minMaxIdx()说明: 返还数组的最小值和最大值,以及其在数组里的位置。参数说明如下:InputArray src 说明: 一个channel的数组。 这里的channel 可以看成图像里的RGB channel。double* minVal, double* maxVal 说明:数组里的最大值,最小值。int* minIdx, int*...转载 2020-04-16 16:57:07 · 2629 阅读 · 0 评论 -
opencv-灰度图像归一化到0~255
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> cv::Mat contrastStretch(cv::Mat ...转载 2020-04-16 11:49:46 · 9865 阅读 · 1 评论 -
opencv-常用函数
1、cvLoadImage:将图像文件加载至内存;2、cvNamedWindow:在屏幕上创建一个窗口;3、cvShowImage:在一个已创建好的窗口中显示图像;4、cvWaitKey:使程序暂停,等待用户触发一个按键操作;5、cvReleaseImage:释放图像文件所分配的内存;6、cvDestroyWindow:销毁显示图像文件的窗口;7、cvCreateFileCapture...转载 2020-04-15 15:35:16 · 162 阅读 · 0 评论 -
opencv-图片旋转90°/-90°/180°
转载地址:https://blog.youkuaiyun.com/andylanzhiyong/article/details/84857915一般角度旋转,我们会这样做:先用getRotationMatrix2D()来计算二维旋转变换矩阵,再用warpAffine()来进行仿射变换对于需90°或-90°旋转,如果我们也这样做: Mat src = imread("E:/TestImg/t1....转载 2020-04-15 09:54:03 · 859 阅读 · 0 评论 -
opencv- 图像水平镜像翻转函数
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> int main() { cv::Mat srcImage = cv::i...转载 2020-04-14 15:43:40 · 1422 阅读 · 0 评论 -
VTK & OpenCV-读取DICOM图像返回它的像素矩阵
工作思路整个工作,最难的就是CT图的正确读取。本人处理的CT图的格式是DICOM格式,这个用OpenCV不能直接读取,我采用了VTK进行读取,然后用OpenCV处理的思路(当然网上也有人说可以直接用ITK读取并处理,只是我不熟悉ITK,所以没有用它)。DICOM图像的读取其实读取DICOM图像不难,主要的要注意在使用VTK读取的时候,要记得转换数据类型,要使用imagecast转到doubl...转载 2020-04-13 15:33:26 · 1543 阅读 · 1 评论 -
opencv——Mat 矩阵数据类型转换convertTo
一、数据类型转换1.一般图像文件格式使用的是unsigned 8bits,对应的数据类型有:CV_8UC1、CV_8UC2,CV_8UC3其中,CV_8UC3表示3通道8位的unsigned char型float是32位,对应的CvMat数据结构类型是:CV_32FC1,CV_32FC2,CV_32FC3double是64位,对应的CvMat数据结构类型是:CV_64FC1,CV_64FC...转载 2020-04-13 15:17:29 · 7314 阅读 · 0 评论 -
opencv-最大连通域
void LargestConnecttedComponent(Mat srcImage, Mat &dstImage) { Mat temp; Mat labels; srcImage.copyTo(temp); //1. 标记连通域 int n_comps = connectedComponents(temp, labels, 4, CV_16U...原创 2020-04-09 10:54:55 · 1279 阅读 · 0 评论 -
opencv-轮廓提取findContours和drawContours
转载:https://blog.youkuaiyun.com/maomao1011120756/article/details/49794997最近用OPENCV的轮廓提取函数,总结一下。不然老忘记。。。。。。。void findContours//提取轮廓,用于提取图像的轮廓(InputOutputArray image,//输入图像,必须是8位单通道图像,并且应该转化成二值的OutputArra...转载 2020-01-02 18:16:32 · 379 阅读 · 0 评论