
opencv
文章平均质量分 69
小张哎!
这个作者很懒,什么都没留下…
展开
-
OpenCV(C++)---加载,修改,保存图像
1、加载图像(用cv::imread)imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称第二个参数,表示加载的图像是什么类型,支持常见的三个参数值IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变IMREAD_GRAYSCALE ( 0)表示把原图作为灰度图像加载进来IMREAD_COLOR (>0) 表示把原图作为RGB图像加载进来注意:OpenCV支持JPG、PNG、TIFF等常见格式图像文件加载例子:sr原创 2021-02-02 17:02:25 · 12793 阅读 · 0 评论 -
OpenCV(C++)---模糊图像(二)
1、中值滤波统计排序滤波器中值对椒盐噪声有很好的抑制作用上图,用中值124替换掉绿色框正中间的150;了解 最大值滤波 和 最小值滤波中值模糊相关的API: medianBlur(Mat src,Mat dest,ksize);ksize大小必须大于1而且必须是奇数。中值模糊的代码实现#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namesp原创 2021-01-31 18:17:35 · 457 阅读 · 1 评论 -
OpenCV(C++)---模糊图像(一)
1、模糊原理Smooth/Blur 是图像处理中最简单和常用的操作之一使用该操作的原因之一就为了给图像预处理时候减低噪声使用Smooth/Blur操作其背后是数学的卷积计算通常这些卷积算子计算都是线性操作,所以又叫线性滤波归一化盒子滤波(均值滤波):高斯滤波2、相关API均值模糊blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1,-1));高斯模糊GaussianBlur(Mat src, Mat ds原创 2021-01-30 22:51:51 · 1420 阅读 · 1 评论 -
OpenCV(C++)---绘制形状与文字
1、使用cv::Point与cv::ScalarPoint表示2D平面上一个点(x,y) Point p; p.x = 10; p.y = 8; or p = Pont(10,8);Scalar表示四个元素的向量Scalar(a, b, c);// a = blue, b = green, c = red表示RGB三个通道2、绘制线、矩形、圆、椭圆等基本几何形状(1)画线:画线 cv::line (LINE_4\LINE_8\LINE_AA)//几种类型其中 LI原创 2021-01-30 17:33:30 · 3333 阅读 · 2 评论 -
OpenCV(C++)---调整图像亮度和对比度
1、理论图像变换可以看作如下:像素变换 – 点操作邻域操作 – 区域调整图像亮度和对比度属于像素变换-点操作:2、重要的APIMat new_image = Mat::zeros( image.size(), image.type() );创建一张跟原图像大小和类型一致的空白图像、像素值初始化为0saturate_cast<uchar>(value)确保值大小范围为0~255之间Mat.at<Vec3b>(y,x)[index]=value原创 2021-01-29 22:38:11 · 7766 阅读 · 0 评论 -
OpenCV(C++)---图像混合
1、理论-线性混合操作2、相关API(addWeighted)解释说明:参数1:inputArray src1 表示 输入图像Mat_src1参数2:double alpha 表示 输入图像src1的alpha值(第一个权重即α)参数3:inputArray src2 表示 输入图像Mat – src2参数4:double beta 表示 输入图像src2的alpha值(第二个权重即1-α)参数5:gamma值(校验值)参数6:OutputArray dst 表示 输出混合图像dty原创 2021-01-28 10:33:15 · 749 阅读 · 1 评论 -
OpenCV(C++)---Mat对象
1、Mat对象与IplImage对象Mat对象OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分。IplImage是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内存泄漏问题。2、Mat对象构造函数与常用方法构造函数常用方法常用方法介绍Mat()void copyTo(Mat mat)复制一个相同的Mat对象,两者互不原创 2021-01-26 17:23:22 · 624 阅读 · 0 评论 -
OpenCV(C++)---矩阵的掩膜操作
1、 获取图像像素指针CV_Assert(myImage.depth() == CV_8U);Mat.ptr(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。获得当前行指针const uchar* current= myImage.ptr(row );获取当前像素点P(row, col)的像素值 p(row, col) =current[col]2、像素范围处理saturate_cast这个函数的功能是确保RGB值得范围在0~255之间,如下所示:saturate原创 2021-01-26 10:37:04 · 1197 阅读 · 0 评论 -
OpenCV(C++)---图像操作
1、读写图像imread (读):可以指定加载为灰度或者RGB图像Imwrite (写):保存图像文件,类型由扩展名决定2、读写像素读一个GRAY像素点的像素值(CV_8UC1)Scalar intensity = img.at<uchar>(y, x); 或者 Scalar intensity = img.at<uchar>(Point(x, y));这里补充一个快捷键:快捷键:选中代码,然后按 alt+“上下键”,可以上下移动代码单通道的代码实现:#原创 2021-01-27 22:56:27 · 922 阅读 · 0 评论