opencv
xiachong27
这个作者很懒,什么都没留下…
展开
-
cvWaitKey
1、函数形式:int cvWaitKey(intdelay=0 );2、函数功能:cvWaitKey()函数的功能是不断刷新图像,频率时间为delay,单位为ms。3、参数: delay———延时的毫秒数。delay<=0时,函数cvWaitKey无限制的等待按键事件,所以显示图像时,需要在cvShowImage("**.bmp",image)后加上cvWaitKey(0),即该程序停在显示函数处,不运行其他代码,直到键盘值为key的响应之后;否则,图像无法正常显示。 del...转载 2021-01-21 13:44:49 · 928 阅读 · 0 评论 -
cmake静态编译以及安装带有opencv的静态库并调用
搞opencv的静态编译静态编译就是说可以将你编译出来的可执行文件放到没有配置什么环境的电脑里,直接运行; 而动态编译则需要将用到的库文件放到相应位置,windows下将需要的库文件放到根目录即可,linux则需要放到系统路径中。首先明确一点:想做自己写的程序的静态编译,例如写一个关于opencv的代码,首先需要将opencv库进行静态编译,网上有各种教程。windows上将opencv源码进行静态编译,然后通过对vs进行相应的简单配置,就可以生成静态编译的可执行文件。linux上将opencv原创 2020-08-06 12:02:04 · 2775 阅读 · 0 评论 -
opencv函数之saturate_cast(防止溢出)
首先举个例子:uchar a = saturate_cast<uchar>(-100); // a = 0 (UCHAR_MIN)short b = saturate_cast<short>(33333.33333); // b = 32767 (SHRT_MAX)在图像处理方面,无论是加是减,乘除,都会超出一个像素灰度值的范围(0~255),saturate_...转载 2018-10-16 19:23:47 · 2901 阅读 · 0 评论 -
改变图像的对比度和亮度
两种常用的点过程(即点算子),是用常数对点进行 乘法 和 加法 运算: 两个参数 和 一般称作 增益 和 偏置 参数。我们往往用这两个参数来分别控制 对比度 和 亮度 。 你可以把 看成源图像像素,把 看成输出图像像素。这样一来,上面的式子就能写得更清楚些: 其中, 和 表示像素位于 第i行 和 第j列 。 代码 下列代码执行运算...转载 2018-10-16 19:28:30 · 2616 阅读 · 0 评论 -
C++Debug Assertion Failed!到底出错在哪里?
总结来说这种错误存在两种情况,其一就是野指针。 另一种情况就是内存泄露。 在调试的时候一定是在自己编写的函数上找错,不要一只跟着调试顺序在库函数里找错。 注意事项 单步调试找到错误,祝好运。 以上为百度出来的结果,但是我的程序是所有的都运行出来了之后出现了这个对话框,所以,我也没有找到解决方法。...原创 2018-11-13 19:21:09 · 32016 阅读 · 0 评论 -
cvCvtPixToPlane & cvCvtPlanetoPix
“cvCvtPixToPlane”: 找不到标识符将cvCvtPixToPlane 改成 cvSplit同样错误,解决方法:或“cvCvtPlaneToPix”: 找不到标识符增加#define cvCvtPlaneToPix cvMergeOpenCv版本不同导致。...原创 2018-11-27 15:21:40 · 265 阅读 · 0 评论 -
cvScale 深度转换 线性变换
本文转载自:http://shijuanfeng.blogbus.com/logs/215967179.html在处理一些需要图像相加运算的操作时,通常定义 IplImage* dst = cvCreateImage(cvGetSize(img),IPL_DEPTH_64F,img->nChannels);当处理完成后,需要对原这个IPL_DEPTH_64F深度的图像进行显示的...转载 2018-11-27 20:54:23 · 555 阅读 · 0 评论 -
OpenCv中 width 和 widthStep的区别
opencv中 width 和 widthStep的区别:width表示图像的每行像素数,widthStep表示存储一行像素需要的字节数。在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。如果8U单通道图像宽度为3,那么widthStep是4,加一个字节补齐。这个图像的一行需要4个字节,只使用前3个,最后一个空着。也就是一个宽3高3的图像的i...转载 2018-12-27 16:41:25 · 883 阅读 · 0 评论 -
opencv 头文件 包含 include 的问题
1.最开始用opencv2.1 直接习惯性的:#include"cv.h“这样纸。。。。。只要配置好环境变量之后就OK了。。。2.新版本之后 大家 都习惯 这样:#include <opencv2/highgui/highgui.hpp>这样。。一直弄不太清楚。。。。分析下:新版本的include 路径是; D:\Program Files\o...转载 2018-12-22 09:42:44 · 7181 阅读 · 0 评论 -
Mat和IplImage相互转换
Mat是OpenCV和C ++的接口矩阵类,ImlImage是OpenCV和C语言的接口的结构体,但是C ++程序有时候时候还是要用到IplImage,例如在MFC中的Picture Control显示图片。下面总结了针对OpenCV3.0以上版本的垫和IplImage的相互转换方法://IplImage—>Mat//EXAMPLE://浅拷贝:IplImage* pB...转载 2018-12-30 16:03:38 · 203 阅读 · 0 评论 -
opencv引起的、破坏了电脑系统环境变量的处理办法
今天听到别人面试有提到图像旋转的问题,发现自己这么基础的算法居然都没有看过,需要成长的还有很多啊网搜了一下,本来是想打开vs跑一下搜到的代码,结果发现opencv坏掉了,不能用了,之前用的好好的,就一周没用而已,,,opencv不能用,说是缺少dll文件,找到opencv如下的文件夹(文件路径因人而异),找到缺失的dll文件,拷贝到C:\Windows\System32问价路径中,缺什...原创 2019-03-13 21:42:36 · 399 阅读 · 0 评论 -
图像梯度-Sobel算子
形态学梯度:膨胀减去腐蚀 图像梯度:指边缘处产生的,常指二值图像中的黑白处。dst = cv2.Sobel(src, ddepth, dx, dy, ksize)-----------白减去黑,或者黑减去白ddepth:图像的深度,一般会写CV_64F,可以出现负数 dx和dy分别表示水平和竖直方向,水平:1,0(右边减左边);竖直:0,1(下面减上面); ksize是Sobel算子...原创 2019-03-09 22:02:29 · 3951 阅读 · 3 评论 -
基于局部自适应阈值的图像二值化
较为常用的图像二值化方法有:1)全局固定阈值;2)局部自适应阈值;3)OTSU等。全局固定阈值很容易理解,就是对整幅图像都是用一个统一的阈值来进行二值化;局部自适应阈值则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值。这样做的好处在于每个像素位置处的二值化阈值不是固定不变的,而是由其周围邻域像素的分布来决定的。亮度较高的图像区域的二值化阈值通常会较高,而亮度较低的图像区域的二...转载 2019-03-11 20:19:12 · 3397 阅读 · 0 评论 -
opencv中的merge函数
居然有两个版本。。。。。。merge里面的参数个数不一样!该函数用来合并通道原型版本一void merge(const Mat* mv, size_t count, OutputArray dst);第一个参数是图像矩阵数组,第二个参数是需要合并矩阵的个数,第三个参数是输出版本二void merge(const vector& mv, OutputArr...转载 2019-03-25 21:10:45 · 1791 阅读 · 0 评论 -
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor
检查1:是否读入的图像本身是灰度或者已经转为灰度图,继续用cvtColor转为灰度图时就会出现错误。检查2:是否有空帧,当读多图片或者视频时,若读到空的时候就会出现这个错误,建议前面加上检查图片是否为空的if判断。if (image.empty()) { printf("no images"); return -1; }...原创 2019-03-28 20:29:45 · 2568 阅读 · 0 评论 -
计算图像的均值、标准差
均值反映了图像的亮度,均值越大说明图像亮度越大,反之越小; 标准差反映了图像像素值与均值的离散程度,标准差越大说明图像的质量越好;meanStdDev()函数用于计算一个矩阵的均值和标准差,它的声明如下:void cv::meanStdDev ( InputArray src, OutputArray mean, OutputArray ...原创 2019-03-28 20:33:15 · 17749 阅读 · 0 评论 -
批量输出lib文件名(PCL或者opencv等环境配置)
例如要获取目录中 D:\PCL 1.8.1\3rdParty\VTK\lib 下的所有静态链接库文件名并存储至文本.txt,方法如下:1、win+r2、输入:cmd回车3、输入:cd /d D:\PCL 1.8.0\3rdParty\VTK\lib 回车4、输入:dir /b *.lib >0.txt 回车 (打开你第三步输入文件夹下的0.txt文件就能看到所有的lib文件名)...原创 2019-07-30 11:12:28 · 1304 阅读 · 0 评论 -
c++编程时为什么老是出现cout未定义
#include <iostream>using namespace std; //加上这句cout输出流类声明和定义都在iostream之中(对于非标准C++而言是iostream.h)其名字位于std空间,对于某些编译器,特别是针对Windows平台的开发工具,都要显式声明命名空间。cout是输出函数 std是命名空间, std::out表示,out函数属于std这个命名空间...转载 2018-10-14 10:20:59 · 33984 阅读 · 3 评论 -
OpenCV 学习(图像的基本运算)
OpenCV 学习(图像的基本运算)图像的基本运算有很多种,比如两幅图像可以相加、相减、甚至可以相乘、相除。图像可以放大、缩小、旋转,还可以截取中间的一副子图,各个颜色通道还可以分别提取。总之,对于图像可以进行的基本运算非常的多,这里不可能全部都写出来,只是挑了些特别常用的简单的写写。图像间的加减乘除OpenCV 中提供了如下的一些函数,用来进行图像的加减乘除。void add(InputArra...转载 2018-05-26 20:46:14 · 903 阅读 · 0 评论 -
opencv 滑动条创建
可能是我太笨了吧,滑动条搞了好几天,最后终于知道自己哪里出现问题(就知道每次出现的都是弱智问题)以Canny()调节阈值算法为例(按照步骤一步一步的写就可以,一步都不要落下!!!)1、创建窗口用namedWindow()函数创建窗口。如:namedWindow(“边缘检测”,WINDOW_AUTOSIZE);2、创建滑动条int createTrackbar(const string& t...转载 2018-05-28 14:18:27 · 3537 阅读 · 1 评论 -
opencv 2 归一化函数normalize详解
1. 归一化定义与作用 归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。归一化有同一、统一和合一的意思。 归一化的目的简而言之,是使得没有可比性的数据变得具有可比性,同时又保...转载 2018-06-11 17:19:55 · 1501 阅读 · 0 评论 -
OpenCV实现验证otsu算法
otsu法(最大类间方差法,有时也称之为大津算法)使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻找一个合适的灰度级别 来划分。 所以 可以在二值化的时候 采用otsu算法来自动选取阈值进行二值化。otsu算法被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响。因此,使类间方差最大的分割...原创 2018-06-04 20:28:19 · 888 阅读 · 0 评论 -
uchar与char
char 是有符号的 ,uchar(unsigned char) 是无符号的,8-bit无符号整形数据,里面全是正数 两者都作为字符用的话是没有区别的,但当整数用时有区别: char 整数范围为-128到127( 0x80__0x7F) 而unsigned char 整数范围为0到255( 0__0xFF ) 有时候想把整数数值限在255范围内,也用unsigned...原创 2018-05-29 20:08:36 · 21236 阅读 · 0 评论 -
opencv 图像卷积运算函数filter2D()
在其官方文档中,filter2D()函数在掩模板介绍中一笔带过,我认为该函数应该进行详细介绍。 对于使用掩模板矩阵(kernel)计算每个像素值,结合函数filter2D()函数,其定义如下:CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst, int ddepth, Inp...转载 2018-05-31 10:20:00 · 2789 阅读 · 0 评论 -
malloc函数用法
1、函数声明void *malloc(int size);说明:malloc向系统申请分配size字节的内存空间,返回类型为void*类型。2、使用int *p;p = (int *)malloc( sizeof(int) );注意:(1)因为malloc返回的是不确定类型的指针,所以返回之前必须经过类型强制转换,否则编译报错,如:“ 不能将void*赋值给int*变量 ”。(2)malloc只管...转载 2018-05-31 21:16:53 · 3816 阅读 · 0 评论 -
Mat 创建图像的理解
Mat类型: 创建Mat图像处理矩阵的时候,要注意得到的是几个通道的图像。1,若直接Mat image;则创建的是一个任意通道的矩阵,他可以储存任何通道数的转换后的图像,但是!请注意!如果没有用到类似于cvtColor(image,gray,CV_RGB2GRAY)这种转换函数,例如只是用了经过各种操作得到的像素值进行直接赋值,则就会出现错误。因为此时创建的Mat图像的通道数是不确定的,...原创 2018-06-08 08:54:52 · 2604 阅读 · 0 评论 -
OpenCV笔记:pyrDown()函数和pryUp()函数的使用
OpenCV实现了用于创建图像金字塔的两个函数pyrDown()和pryUp()。 图像金字塔是一种经典的图像多尺寸描述方法,它将降采样和平滑滤波结合在一起,对图像进行多尺度表示。图像金字塔由不同尺寸的图像叠加而成,通常每一层的尺寸都是上一层的一半。通常用于高效的图像分析,这种处理技术的意义在于:我们在对图像进行处理时,大多是要着眼于图像中有意义的部分,而同一幅图像中可能含有不同尺度下“有...转载 2018-08-26 15:42:20 · 752 阅读 · 0 评论 -
OpenCV--图像的缩放-resize()
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i_chaoren/article/details/54564663主要介绍函数resize();图像缩放的效果图如下:主程序代码及函数解释如下所示: **************************************************************...转载 2018-08-26 15:56:40 · 4615 阅读 · 3 评论 -
OpenCV不同图像深度类型的理解
IplImage* inImg = cvLoadImage("1.bmp", CV_LOAD_IMAGE_GRAYSCALE); IplImage* out8u = cvCreateImage(cvGetSize(inImg), IPL_DEPTH_8U,1); IplImage* out8s = cvCreateImage(cvGetSize(inImg), IPL...转载 2018-08-26 20:44:03 · 1398 阅读 · 0 评论 -
【opencv】错误提示OpenCV Error: Assertion failed
在OpenCV的编程中遇到了这样一个问题,错误提示显示: opencv 错误:断言失败<dims <= 2 && data && <unsigned> i0 << unsigned> size.p [0] ...... 后边还有好长,具体见下图出错说明出错的地方位于opencv内部的“断言”错误。...原创 2018-08-27 16:20:20 · 37251 阅读 · 2 评论 -
遍历图像方法以及注意事项
在遍历图像中,方法很多,当把通道数作为循环中的一员的时候,要记得通道循环数是通道()这里的括号不能省掉!如上图,最内部的用于循环,通道后面的括号不能丢掉,否则就会出错。************************************************** ************************************************** *******...原创 2018-08-27 17:17:29 · 1075 阅读 · 0 评论 -
c语言中&与&&区别
c语言中&与&&的区别&:按照位与操作,例如:0010&1101,结果为0000 &是java中的位逻辑运算: eg: 2&3=2; 分析如下: 2的二进制为10 ;3的二进制为11 ; 逻辑&之后为10&&:短路与,表示如果两个条件都成立则执行之后的逻辑; ...原创 2018-08-27 21:28:14 · 47544 阅读 · 2 评论 -
测量程序运行时间;getTickCount()与getTickFrequency()
opencv里使用getTickCount()与getTickFrequency()函数记录时间; 函数解释:getTickCount()函数:它返回从操作系统启动到当前所经的计时周期数。getTickFrequency()函数:返回CPU的频率。 =====================分割线==================演示代码 #in...转载 2018-08-27 22:09:49 · 4222 阅读 · 0 评论 -
opencv学习之------在算法设计中使用策略模式
一个设计模式是一个可靠的,可重用的方案,用于解决软件设计中频繁出现的问题。策略设计模式的目标是将算法封装在类中。因此可以很容易的替换一个现有的算法,或者把几个算法组合起来进行更复杂的处理,都会更加容易。而且这种模式能够尽可能地将算法的复杂性隐藏在一个直观的编程接口之后,因而有利于算法的部署。比方说,我们需要构建一个简单的算法,它可以鉴别图像中含有给定颜色的所有像素。该算法输入的是图像以及颜色,...转载 2018-08-31 22:09:33 · 411 阅读 · 0 评论 -
高斯滤波
一、图像平滑与滤波概念介绍图像滤波之前有必要了解一下图像平滑的概念。图像平滑(smoothing)也称为图像模糊(blurring),是一种在图像处理中使用频率很高的操作,进行图像平滑的操作原因有很多,在这里重点介绍使用平滑操作降低图片噪声。因为在图像中,噪声的能量大都集中在幅度谱的低频和中频部分,而在较高的频段,一些重要的细节信息往往被噪声淹没。在一幅图像中,所谓的高频部分是指图像中像素值落差很...转载 2018-05-26 20:08:52 · 4354 阅读 · 1 评论