展开

关键词

C++ OpenCV图像

概述 图像识别的一个核心问题是图像特征提取,简单描述即为用一组简单数据(数据描述量)来描述整个图像,这组数据月简单越有代表性越好。 良好特征不受光线、噪点、几何形变干扰,图像识别技术发展中,不断有新描述图像特征提出,而图像不变矩就是其中一个。 OpenCV矩主要包括以下几种:空间矩,中心矩和中心归一化矩。 ---- 代码演示 新建一个项目opencv-0026,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? 其中命令行里面显示每个轮廓面积和周长,右边轮廓里面还有每个轮廓质心 ---- -END-

61930

C++ OpenCV图像重映射

图像重映射 图像重映射意思简单说就是把输入图像中各个像素按照一定规则映射到另外一张图像对应位置上去,形成一张新图像。 ? 为了完成映射过程, 有必要获得一些插值为非整数像素坐标,因为源图像与目标图像像素坐标不是一一对应. 简单说就是改变图片位置(左,右,上,下,颠倒) 相关API介绍 cv::remap ? 代码演示 新建一个项目opencv-0019,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? ?

47520
  • 广告
    关闭

    老用户专属续费福利

    云服务器CVM、轻量应用服务器1.5折续费券等您来抽!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++ OpenCV轮廓发现

    轮廓发现(find contour) 轮廓即是以某种方式表示图像中曲线列表。这种表示可以根据实际情形不同而不同。表示一条曲线方式有很多种。 轮廓发现是基于图像边缘提取基础寻找对象轮廓方法。所以边缘提取阈值选定会影响最终轮廓发现结果。 OpenCV中,轮廓是由STL风格vector<>模板对象表示,其中vector中每个元素都编码了曲线上,下一点位置信息。 先上干货 Demo视频显示效果 ? 全部发现轮廓图像,点vectorsvector int contourIdx, // 需要绘制轮廓指数 (-1 表示 "all") const Scalar& color Point offset = Point() // (可选) 所有点偏移 ) 代码演示 新建一个项目opencv-0023,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入

    1K20

    C++ OpenCV模版匹配

    模版匹配就是在整个图像区域发现与给定子图像匹配小块区域 模版匹配必须要有一个模版图像T(给定子图像),还需要一个待检测图像S(源图像) 在待检测图像上,从左到右,从上到下计算模版图像与重叠子图像匹配度 Method //计算匹配程度方法 ---- 关于匹配方法,使用不同方法产生结果意义可能不太一样,有些返回值越大表示匹配程度越好,而有些方法返回值越小表示匹配程度越好 关于参数 CV_TM_SQDIFF_NORMED归一化平方差匹配法 CV_TM_CCORR_NORMED归一化相关匹配法 CV_TM_CCOEFF_NORMED归一化相关系数匹配法 代码演示 新建一个项目opencv -0022,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? 可以看到左边是我们源图,中间我们要匹配图,运行起来后直接就匹配到对应图了 通过改变上面的算法类型,得到不同效果 ? ? ---- -END-

    96820

    C++ OpenCV输出中文

    前言 以前文章《C++ OpenCV视频操作之图像输出文字》介绍了OpenCVputText函数可以输出文字,但是这个函数只能输出英文,如果输入是中文会变为乱码,今天我们就来实现OpenCV输出中文 _ #include <Windows.h> #include <string> #include <opencv2/opencv.hpp> using namespace cv; class putText ,配置参见《VS2017配置OpenCV通用属性》。 上图中putText.h和putText.cpp就是上面的核心代码,接下来我们看一下main代码。 main.cpp #include <iostream> #include <opencv2/opencv.hpp> #include "putText.h" using namespace std;

    1.9K20

    C++ OpenCV像素操作

    关于OpenCV像素操作,我们在VS2017里面新建项目pixeldemo,然后导入配置好属性环境(配置属性环境看VS2017配置Opencv通用属性文章) 开始编码 在源文件里新建项起名为main ? 然后自己在上面引入iostream和opencv头文件,写入main方法 ---- ? ---- 加载显示图片 要做像素操作我们首先要加载一张图片进来并显示出来,所以我们先写加载代码 ? ? 说明我们图片加载成功了 ---- 灰度图 我们先把原来加载图片改为单通道灰度图并显示出来,代码要写在cv::waitkey(0)上面. ? 显示出效果 ? 最左边是原图,中间修改后灰度图,最后面是通过计算后取返图。 写完后看看这次输出图像效果 ? 可以看出单通道取反和三通道取反出来效果是有点不太一样

    1.1K20

    C++ OpenCV直方图比较

    直方图比较 对输入两个图像计算得到直方图H1和H2,归一化到相同尺度空间,然后可以通过计算H1与H2之间距离得到两个直方图相似程度进而比较图像本身相似程度。 OpenCV 提供了四种比较方法: Correlation 相关性比较 Chi-Square 卡方比较 Intersection 十字交叉比较 Bhattacharyya 代码 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> hsv_base; Mat src_test1, hsv_test1; Mat src_test2, hsv_test2; Mat hsv_half_down; /// 装载三张背景环境不同图像 直方图 MatND hist_base; MatND hist_half_down; MatND hist_test1; MatND hist_test2; /// 计算HSV图像直方图

    42320

    C++ OpenCV直方图计算

    直方图概念 上一篇我们讲了直方图均衡化,里面一些直方图概念有了介绍。我们再来看了一个图 ? 上述直方图概念是基于图像像素值,其实是对图像梯度,每个像素角度、等一切图像属性值,我们都可以建立直方图。这个才是直方图概念真正意义,不过是基于图像像素灰度直方图是最常见。 代码演示 新建一个项目opencv-0020,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? ? 直方图计算代码 ? ? ? ? ? Mat(): 掩码( 0 表示忽略该像素), 如果未定义,则不使用掩码 r_hist: 储存直方图矩阵 1: 直方图维数 histSize: 每个维度bin数目 histRange: 每个维度取值范围 : 归一化方法 (例中指定方法将数值缩放到以上指定范围) -1: 指示归一化后输出数组与输入数组同类型 Mat(): 可选掩码 6.在直方图画布上画出直方图 ?

    1.3K20

    c++ opencv保存图片

    大家好,又见面了,我是你们朋友全栈君。 本人在做人脸采集时候遇到了要用c++ opencv保存图片问题,下面是方法,代码是抠出来,由于是项目所以全部代码就不放出来了 直接使用c++ opencv接口函数使用方法。 cv::imwrite(path_filename,picture) path_filename:为保存图片路径和图片名,picture为要保存到图片,下面是例子。 #include<opencv2/opencv.hpp> using namespace std; using namespace cv; cv::Mat frame1; cv::VideoCapture /img/114.jpg”, frame1);//这里我用是相对路径,读者可用绝对路径,路径用左斜线!!! //中间其他功能代码省略。

    7220

    C++ OpenCV模糊图像

    卷积 就是叠加.卷积重要物理意义是:一个函数(如:单位响应)在另一个函数(如:输入信号)上加权叠加。 通俗说: 在输入信号每个位置,叠加一个单位响应,就得到了输出信号。 这正是单位响应是如此重要原因。 卷积应用 用一个模板和一幅图像进行卷积,对于图像上一个点,让模板原点和该点重合,然后模板上点和图像上对应点相乘,然后各点积相加,就得到了该点卷积值。 把一个点像素值用它周围像素值加权平均代替。 卷积是一种线性运算,图像处理中常见mask运算都是卷积,广泛应用于图像滤波。 OpenCV中自带了4种模糊算法: blur(均值模糊) GaussianBlur(高斯模糊) medianBlur(中值模糊) bilateralFilter(双边滤波) 新建项目 新建一个项目 opencv-0009,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.并加载我们常用那个图片显示出来 ?

    1.1K31

    OpenCV 无法打开opencv_woldxxxd.lib问题

    原因:#pragma comment (lib,"xxx.lib")//默认和引用CPP文件在一个文件夹中 解决方法1:将xxx.lib和调用pragma comment源文件放在一个目录(注意是调用它源文件

    26420

    opencv 图像去雾C++实现

    去雾原理原理是根据何凯明博士《Single Image Haze Removal Using Dark Channel Prior》这篇文章,介绍见https://www.cnblogs.com/Imageshop 本文主要介绍C++实现,工程文件见:https://download.csdn.net/download/qq_34902877/12017480。 1、求暗通道 窗口大小size,这个对结果来说是个关键参数,窗口越大,其包含暗通道概率越大,暗通道也就越黑,去雾效果越不明显,一般窗口大小在11-51之间,即半径在5-25之间。 Mat DarkChannel(Mat srcImg, int size) { vector<Mat> chanels; split(srcImg, chanels); //求RGB三通道中最小像像素值 具有着明显意义,其值越小,去雾效果越不明显 Mat TransmissionEstimate(Mat src, float outA[3], int size, float omega) { Mat

    84620

    C++ OpenCV之透视变换

    前言 我们在拍摄图片时候无法保证图片是正下方垂直拍摄,所以在获取图像时候会防止我们提取正确图像,这里我们就需要用到了透视变换。今天我们在试一下OpenCV透视变换。 实现效果 ? dst 输出图像相应四边形顶点坐标。 map_matrix 指向3×3输出矩阵指针。 代码演示 我们再新建一个项目名为opencv--toushi,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法. ? ---- 定义透视变换坐标 ? 上面的src_corners定义是根据我们原图上自己设置点,后面我们会找一个机会来用程序获取这些点。 dst_corners是我们要通过矩阵变化后生成点。 定义4个点顺序应该是顺时针方向获取,如下图 ? ---- 获取透视变换矩阵并显示最后图像 ? ---- 最后生成效果 ?

    2.1K20

    C++ OpenCV基本阈值操作

    这样图像分割方法是基于图像中物体与背景之间灰度差异,而且此分割属于像素级分割。 为了从一副图像中提取出我们需要部分,应该用图像中每一个像素点灰度值与选取阈值进行比较,并作出相应判断。 (注意:阈值选取依赖于具体问题。即:物体在不同图像中有可能会有不同灰度值。 一旦找到了需要分割物体像素点,我们可以对这些像素点设定一些特定值来表示。 阈值化类型: OpenCV中提供了阈值(threshold)函数: threshold 。 这个函数有5种阈值化类型,在接下来章节中将会具体介绍。 ---- 代码演示 新建一个项目opencv-0014,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.这次我们直接在第二个图片上加上一个TrackBar 二值化阈值 基本步骤是要先把图片改为单通首图像,即是灰度图,如果是彩色三通道图二值化会有问题,然后把灰图图像再进行二值化处理即可. 我们写一下TrackBarEvent事件 ?

    1.1K30

    C++ OpenCV标记函数drawMarker使用

    OpenCV基础函数 drawmarker就是画标记函数,使用也非常简单,以前一般要图像上做标记可能直接就画点,而drawmarker函数中,可多个不同标记可以自己选择,用了它就可以在图像上做标记会更方便一些 ,已经写了对应说明,需要注意一个就是markerType参数,这里参数有多个,如下: 参数值 参数名称 MarkerTypes::MARKER_CROSS 十字 MarkerTypes::MARKER_DIAMOND 新建一个opencvdrawmarker项目,配置OpenCV属性《VS2017配置OpenCV通用属性》 ? main代码 #include<iostream> #include<opencv2/opencv.hpp> using namespace cv; using namespace std; int drawMarker函数就是这么简单。 完

    1.2K30

    C++ OpenCV凸包检测

    凸包 凸包指如果在集合A内连接任意两个点直线段都在A内部,则称集合A是凸形。简单点理解,就是一个多边型,没有凹地方。 相关API OpenCV中提供了函数convexHull()用于对物体轮廓凸包进行检测,对形状凸包缺陷分析时使用 void convexHull( InputArray points, OutputArray 类型要么为整型向量,要么为点集向量,如果是整型向量,那么存储只是索引,索引对象是输入二维点集(如果不懂这句话意思,看一遍下面给出源码就清楚了)。 clockwise:凸包方向标志位。 表示返回点个数,如果第二个参数是vector<Point>则自动忽略 代码演示 实现步骤 图像从RGB转换为灰度图 灰度图转为二值图像 通过发现轮廓得到候选点 凸包API调 用 绘制显示 新建一个项目opencv -0024,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ?

    1.1K30

    C++ OpenCV人脸图像提取

    前言 《C++ OpenCV Contrib模块LBF人脸特征点检测》文章中已经介绍了人脸特征点检测,本篇文章是在原代码基础上实现人脸提取。 ? 实现效果 ? 上图中介绍了人脸特征点几个关键位置: 位置 点范围 左侧下巴轮廓 0-7 下巴 8 右侧下巴轮廓 9-16 左侧眉毛 17-21 右侧眉毛 22-26 鼻梁区域 27-30 ‍ 鼻底区域 31-35 两个需要注意点: 人脸关键点检测出来数据是vector<vector<Point2f>>,而做凸包检测时候需要将vector<vector<Point2f>>转换成vector<vector<Point 做区域掩膜时先生成一张相同大小全黑图片,然后把要截取区域全部填充为白色,再通过copyto方式生成即可。 结语 源码下一篇会再提交上去,现在源码在处理人脸Delaunay三角形 提取,正好遇到了问题。等下篇时候一起说一下。 完

    68230

    C++ OpenCV直方图均衡化

    人们把照片亮度分为0到255共256个数值,数值越大,代表亮度越高。其中0代表纯黑色最暗区域,255表示最亮纯白色,而中间数字就是不同亮度灰色。 如果一副图像像素占有很多灰度级而且分布均匀,那么这样图像往往有高对比度和多变灰度色调。直方图均衡化就是一种能仅靠输入图像直方图信息自动达到这种效果变换函数。 直方图均衡化基本思想是把原始图直方图变换为均匀分布形式,这样就增加了象素灰度值动态范围从而可达到增强图像整体对比度效果。 ? 通过上一篇《C++ OpenCV图像重映射》我们用到了remap这个函数,可以将图像灰度分布从一个分布映射到另一个分布,然后再得到映射后像素值即可。 ? 代码演示 新建一个项目opencv-0020,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? ? 直方图均衡化 代码非常简单 ?

    1K40

    C++ OpenCV线性混合操作

    图像线性混合数学原理 G(x)=(1-a)F(x)+aQ(x) 注意事项: 1,a取值范围为0到1之间 2,F(x)和Q(x)为参与混合两幅图像,G(x)表示输出图像 3,通过对两幅图像每个像素值做线性加权得到最终输出图像 addWeighted函数 在OpenCV中用于线性混合操作API为addWeighted函数 void addWeighted(InputArray src1, double alpha, InputArray 代码演示 新建项目 新建一个项目opencv-0006,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法. ? OK,显示图片没有问题。 中间图像就是我们通过线性混合操作生成图片,接下来我们改一下权重,看看显示效果. ? 将第一个图像权重改为0.2,显示效果为 ? 明显可以看出第二张图显示比较清晰.

    38020

    opencv使用中出现问题

    最近项目遇到一个问题,springboot2在打包过程中出现问题; 1、引用本地jar包,怎么打包到项目; pom.xml 配置 dependencies标签配置 <! --打包本地jar包--> <dependency> <groupId>org.opencv</groupId> <artifactId>opencv</artifactId 使用人脸识别过程中,需要引入haarcascade_frontalface_alt2.xml文件,如果放在项目的lib文件中,在打包过程中能够打到包里,但是在动态引用过程中,由于jar包中文件引用出现混乱路径情况 找到一个折中办法,haarcascade_frontalface_alt2.xml文件放到固定目录下,再引用时候,只需要读取固定路径即可。 .*; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import org.opencv.objdetect.CascadeClassifier

    22910

    相关产品

    • 应用性能观测

      应用性能观测

      包含指标、链路、日志的一站式应用性能监控服务,开源协议平滑接入,有效加速故障排查,定位架构瓶颈

    相关资讯

    热门标签

    扫码关注腾讯云开发者

    领取腾讯云代金券