opencv
小鼠2021
heloo
展开
-
cv::HoughLinesP()&CV::HoughLines()&cv::HoughCircles()
函数作用cv::HoughLinesP()和CV::HoughLines():检测直线cv::HoughCircles():检测圆函数原型void HoughLinesP(InputArray image, // 源图像,需为8位的单通道二进制图像 OutputArray lines, // 每一条线由具有四个元素的矢量(x_1,y_1, x_2, y_2) double rho, // double类型的rho, 以像素为单位的距离精度一般为1 double原创 2021-09-20 21:59:15 · 321 阅读 · 0 评论 -
cv::boundingRect()& cv::minAraeRect() & cv::minEnclosingCircle()
函数作用boundingRect()得到包覆此轮廓的最小正矩形。minAreaRect()得到包覆轮廓的最小斜矩形。minEnclosingCircle()得到包覆此轮廓的最小圆形。函数原型Rect boundingRect(InputArray points)RotatedRect minAreaRect(InputArray points)void minEnclosingCircle(InputArray points, Point2f& center,原创 2021-09-20 21:23:30 · 622 阅读 · 0 评论 -
cv::contourArea()
函数作用计算轮廓区域面积函数原型double contourArea(InputArray contour, bool oriented = false)// oriented方向:默认为false,表示取面积的绝对值// oriented = true:面积值会按照contour顺逆时针的不同出现正值或者负值...原创 2021-09-20 21:03:54 · 1166 阅读 · 0 评论 -
cv::findContours()
函数作用检测轮廓函数原型findContours( InputOutputArray image, // 输入图像,一般为二值图或者经过Canny()等处理过的图像 OutputArrayOfArrays contours, // 轮廓集合,类型为:vector<vector<Point>> OutputArray hierarchy, // 继承关系,类型为:vector<Vec4i>原创 2021-09-20 20:46:22 · 484 阅读 · 0 评论 -
cv.Laplacian()
函数作用Laplacian卷积函数。函数原型void Laplacian(InputArray src, OuntputArray dst, int ddpth // 输出矩阵数据类型 int ksize=1,// 拉普拉斯核类型 double scale=1,// 比例系数 double delta=0,// 平移系数 int borderType=BORDER_DEFAULT // 边界扩充原创 2021-09-13 19:54:26 · 653 阅读 · 0 评论 -
边缘检测——Laplacian算子
Laplacian原理Laplacian卷积核或者:还有其他一些形式:原创 2021-09-13 19:40:24 · 257 阅读 · 0 评论 -
边缘检测——Canny边缘检测
Canny边缘检测步骤图像I分别与Sobel_x和Sobel_y做卷积,利用平方和开方求得到边缘强度。计算梯度方向对每个位置进行非极大值抑制处理。再对结果进行双阈值的滞后阈值处理。函数原型void Canny(InputArray img, OutputArray edges, double threshhold1, double threshold2, int apertureSize=3, bool L2原创 2021-09-13 17:59:51 · 497 阅读 · 0 评论 -
边缘检测——Scharr算子
Scharr算子Scharr算子的优缺点与Prewiit算子相比,对灰度变化较为敏感。卷积核不可分离原创 2021-09-13 17:33:12 · 394 阅读 · 0 评论 -
边缘检测——Sobel算子
Sobel算子和可分离性利用n=2时高斯卷积算子展开式的系数可作为非归一化的高斯平滑算子,把Prewitt算子中的非归一化均值平滑算子替换,即得到Sobel算子。原创 2021-09-13 17:30:07 · 183 阅读 · 0 评论 -
边缘检测——Prewitt算子
垂直水平方向垂直水平方向的Prewitt算子是可分离的卷积核。45°、135°方向原创 2021-09-13 17:17:32 · 1735 阅读 · 1 评论 -
边缘检测——Roberts算子
Roberts算子对图像噪声具有较高的敏感性。有两种形式:加粗部分为锚点位置。当需要反映45°、135°对角线方向变化率:反映垂直和水平方向边缘:原创 2021-09-13 17:13:13 · 717 阅读 · 0 评论 -
cv::integral()
函数作用图像的积分。函数原型void integral( InputArray src, OutputArray sum, int sdepth = -1 );/* src.size() -> (H,W) sum.size() -> (H+1,W+1) 该函数会在src的上和左边补零,为了方便使用。*/原创 2021-09-12 14:56:05 · 217 阅读 · 0 评论 -
形态学处理——顶帽变换和底帽变换
顶帽变换(Top-hat)Top-hat定义为图像减去开运算结果开运算可以消除暗背景下的较亮区域,用原图减去开运算结果就可以得到原图中灰度较亮的区域,又称为白顶帽变换。还可以校正不均匀光照。底帽变换闭运算减去原图像闭运算可以删除亮度较高背景下的较暗区域,则再减去原图像就可以得到原图中灰度较暗的区域,又称为黑底帽变换。函数原型开运算、闭运算、白顶帽运算、黑底帽运算 结构元:getStructuringElement(shape,kSize[,anchor]) shape:原创 2021-09-12 14:51:17 · 4444 阅读 · 0 评论 -
形态学处理——开运算和闭运算
开运算操作先腐蚀后膨胀的过程称为开运算。开运算操作可以消除暗背景下的较亮区域。闭运算操作先膨胀后腐蚀的过程称为闭运算。闭运算可以消除亮背景下的较暗区域函数原型 结构元:getStructuringElement(shape,kSize[,anchor]) shape: MORPH_RECT:矩形结构元 MORPH_ELLIPSEM:椭圆形结构元 MORPH_CROSS:十字型结构元morphologyEx(src,op,element[,dst[,anchor[,iterati原创 2021-09-12 14:36:21 · 565 阅读 · 0 评论 -
形态学处理——膨胀
膨胀操作膨胀是取每一个位置领域内的最大值。如此,输出图像的总体亮度要大于输入图像,图像中较亮物体的尺寸增大,较暗物体的尺寸会变小。函数原型结构元:getStructuringElement(shape,kSize[,anchor]) shape: MORPH_RECT:矩形结构元 MORPH_ELLIPSEM:椭圆形结构元 MORPH_CROSS:十字型结构元dilate(src,element[,dst[,anchor[,iterations[,bord原创 2021-09-12 14:30:11 · 255 阅读 · 0 评论 -
形态学处理——腐蚀
腐蚀操作腐蚀是取每一个位置的领域内的最小值作为该位置的输出灰度值。函数原型// 结构元:getStructuringElement(shape,kSize[,anchor])// shape:// MORPH_RECT:矩形结构元// MORPH_ELLIPSEM:椭圆形结构元// MORPH_CROSS:十字型结构元erode(src,element[,dst[,anchor[,iterations[,bordertype[,borderValue]]]]])//原创 2021-09-12 14:26:14 · 161 阅读 · 0 评论 -
cv.converScaleAbs()
函数说明void cv::converScaleAbs(src,dst,double alpha = 1, double beta = 0)// dst = saturate_cast<CV_8UC>(src * alpha + beta)实例arr = np.array([123,12])arr = cv.convertScaleAbs(arr,arr,3.0)print(arr) # => [[255],[36]]'''cv.convertScaleAbs(arr,原创 2021-09-12 12:29:06 · 207 阅读 · 0 评论 -
Mat::convertTo()
函数作用目前,imwrite()只能接受CV_8UC1,CV_8UC3,CV_16UC1,CV_16UC3。convertTo()负责转换数据类型不同的Mat对象,即可以将类似float型的Mat转换到imwrite()函数能够接受的类型。cvtColor()是负责转换不同通道的Mat,因为该函数的第4个参数就可以设置目的Mat数据的通道数。函数原型void cv::Mat::convertTo ( OutputArray m,int rtype,double alpha = 1,dou原创 2021-09-12 12:05:32 · 1097 阅读 · 0 评论 -
cv.threshold()
函数作用图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。函数原型double threshold( InputArray src, OutputArray dst,double thresh, double maxval, int type ); enum ThresholdTypes {T THRESH_BINARY = 0,原创 2021-09-12 11:40:37 · 899 阅读 · 0 评论 -
cv.inRange()
函数作用将图像src中像素值位于[lower,upper)中的置为白色255,其余为黑色0.函数原型void inRange(src,lower,upper,dst);原创 2021-09-12 11:36:45 · 340 阅读 · 0 评论 -
opencv-图像的仿射变换和透视变换
仿射变换/**仿射变换: flip(src,dst,flipCode) # 图像翻转 flipCode = 0 : 垂直翻转 > 0 : 水平翻转 < 0 :同时垂直水平翻转------------------------------------------------------------------------ mapMatrix = getAffineTransform(src, dst) #取得图像仿射矩阵 由已知的两个矩阵求解变换矩阵:src和dst只能为3行两列数组原创 2021-09-12 10:45:04 · 102 阅读 · 0 评论 -
cv::mixChannels()
函数作用mixChannels()函数用于将输入数组的指定通道复制到输出数组的指定通道。函数原型void mixChannels( const Mat* src, //输入数组或向量矩阵,所有矩阵的大小和深度必须相同。 size_t nsrcs, //矩阵的数量 Mat* dst, //输出数组或矩阵向量,大小和深度必须与src[0]相同 size_t ndsts,//矩阵的数量 const int* fromTo,//指定被复制通道与要复制到的位置组原创 2021-09-07 11:35:51 · 425 阅读 · 0 评论 -
cv.remap()
函数功能remap():图像的重映射函数原型void cv::remap(InputArray src, OutputArray dst, InputArray map1, 可以是(x,y)的映射,也可以是单独的X的映射 InputArray map2, 如果map1为(x,y)的映射则可以为NULL,否则为y的映射 int interpolation, // 插值方式 int borderMode = BO原创 2021-09-06 20:02:52 · 497 阅读 · 0 评论 -
opencv常用插值和边界处理方式
// 在opencv中主要有五种常用的插值方式1. INTER_LINEAR 双线性插值2. INTER_NEAREST 最邻近插值3. INTER_CUBIC 双三次样条插值4. INTER_AREA 邻域像素再取样5. INTER_LANCZOS4 8X8领域兰索斯插值原创 2021-09-05 10:59:05 · 647 阅读 · 0 评论 -
cv::HoughCircle()
函数作用利用霍夫变换检测图像中的圆函数原型void cv::HoughCircles (InputArray image, // 8位单通道灰度图 OutputArray circles, // tyoe:vector<Vec3f>,(x,y,raduis) int method, // 梯度求解方法:HOUGH_GRADIENT,HOUGH_GRADIENT_ALT double dp, //累加器分辨率与图像分辨率的反比。原创 2021-09-04 16:01:43 · 216 阅读 · 0 评论 -
cv::HoughLinesP() 与 cv::HoughLines()
函数作用通过霍夫变换寻找图像中的直线函数原型cv::HoughLines()void cv::HoughLines (InputArray image, // 必须为单通道8位二进制图像 OutputArray lines, // 类型:vector<Vec2f> 表示形式为(ro,theta) double rho, // 生成极坐标时像素的扫描步长,一般为1 double theta, //角度分辨率 int原创 2021-09-04 15:35:15 · 563 阅读 · 0 评论 -
cv::calcHist()
函数作用计算灰度图像的灰度分布直方图函数原型void calcHist( const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize, const float** ranges, bool uniform = true, bool accu原创 2021-09-03 15:22:27 · 751 阅读 · 0 评论 -
cv::equalizeHist()
直方图均衡化函数实现的灰度直方图均衡化算法,即将直方图的每个灰度值进行归一化处理,求各个灰度的累积分布,接着得到一个映射的灰度映射表,然后根据相应的灰度值来修正原图中的每个像素。函数原型void equalizeHist(InputArray src, OutputArray dst )实例 Mat img = imread("F:\\desktop\\OpenCV_study\\my.jpg", IMREAD_GRAYSCALE); Mat dst; equa原创 2021-09-03 14:58:10 · 702 阅读 · 0 评论 -
cv.pyrUp() 和cv.pyrDown()
函数作用图像金字塔中的向上和向下采样分别通过 pyrUp 和 pyrDown 实现。这里的向上向下采样,是针对图像的尺寸而言的(和金字塔的方向相反),向上就是图像尺寸加倍,向下就是图像尺寸减半。对于 pyrUp,图像首先在每个维度上扩大为原来的两倍,新增的行和列(偶数行和列)以 0 填充。然后用指定的滤波器进行卷积(实际上是一个在每个维度上都扩大为原来两倍的过滤器)去估计”丢失“像素的近似值。对于 pyrDown,先用高斯核对图像进行卷积,然后删除所有偶数行和偶数列,新的到的图像面积就会变成源图像的原创 2021-09-03 14:32:24 · 984 阅读 · 0 评论 -
cv::threshold()
函数作用二值化就是根据不同的条件将每个像素点调整为0/255,也可以调整为其他值。函数原型double cv::threshold(InputArray src, OutputArray dst, double thresh, double maxVal, int type )// src: 原图像// dst:输出图像// thresh:阈值// maxVal:dst中像素最大值// type:阈值类型阈值类型原创 2021-09-03 14:10:46 · 178 阅读 · 0 评论 -
cv.Canny()
void cv.Canny(InputArray src,OutputArray dst,double threshold1,double threshold2, int apertureSize=3,bool L2gradient = false )/*threshold1:低阈值threshold2:高阈值apertureSize:使用的Sobel核的大小,默认3X3L2gradient:代表计算边缘强度时使用的计算方式。true:平方和开方,false:绝对值*/.原创 2021-08-24 16:32:57 · 230 阅读 · 0 评论 -
cv.normalize()
直方图正规化:可以处理多通道矩阵 void normalize(src,dst,alpha=1,beta=0,norm_type=NORM_L2,dtype=-1,maskArray) NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。 NORM_INF : 矩阵中绝对值的最大值 NORM_L1 : 归一化数组的L1-范数(绝对值的和) NORM_L2 : 归一化数组的(欧几里德)L2-范数 dtype=-1,则输出矩阵的类型同原创 2021-08-24 16:16:15 · 1054 阅读 · 0 评论 -
cv::Scharr()
Scharr算子:void Scharr(src,dst,dDepth,int dx,int dy,kSize=3,scale=1,delta=0,borderType=BORDER_DEFAULT) dx != 0 : src与差分方向为水平的Scharr核卷积 dx == 0 , dy != 0 : src与差分方向为垂直方向的Scharr做卷积 kSize = 1, 3, 5, 7,... Sobel卷积核的尺寸 scale=1 比例系数 delta=0:平移系数原创 2021-08-24 11:08:38 · 225 阅读 · 0 评论 -
cv::Sobel()
/**Sobel算子: void Sobel(src,dst,dDepth,int dx,int dy,kSize=3,scale=1,delta=0,borderType=BORDER_DEFAULT) dx != 0 : src与差分方向为水平的Sobel核卷积 dx == 0 , dy != 0 : src与差分方向为垂直方向的Sobel做卷积 kSize = 1, 3, 5, 7,... Sobel卷积核的尺寸 scale=1 比例系数 delta=0:平移系数原创 2021-08-24 10:58:54 · 890 阅读 · 0 评论 -
cv::convertScaleAbs()
#define cvCvtScaleAbs cvConvertScaleAbscv::convertScaleAbs(src,dst,double alpha,shift=beta)// convertTo()@param src input array.@param dst output array.@param alpha optional scale factor.@param beta optional delta added to the scaled values.@sa Mat原创 2021-08-24 10:29:48 · 184 阅读 · 0 评论 -
np.astype()和Mat::convertTo()
关于np.astype()和Mat::convertTo()对比np.astype(): res % 256 (仅针对np.uint8类型)Mat::convertTo(): res = 255 if res>255 else res原创 2021-08-24 10:05:18 · 178 阅读 · 0 评论