![](https://img-blog.csdnimg.cn/20210713154259153.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
opencv C++
文章平均质量分 77
未来战队学习之路 我是小白!!!
LJ&H
这个作者很懒,什么都没留下…
展开
-
从图像中提取特定颜色区域。
作业:利用 OpenCV 实现:分别找出 images 中 3 张图片里的蓝色指示牌和绿色指示牌,并将它们 写入到 green、blue 两个文件夹中。 要求:1. 用矩形框出指示牌 2. 写入的指示牌需要尽量拉正运行结果如下图:思路:1、转化成HSV,找出相应颜色对应的范围,用inRange函数提取出来。2、找出相应轮廓并将轮廓画出。3、用最小外接矩形,找出要提取的矩阵。4、将找出矩形的四个顶点按照顺时针顺序排除。5、运用三点法的仿射变换,找出变化前.原创 2021-07-23 15:07:37 · 5124 阅读 · 11 评论 -
用鼠标获取图片上某一点的HSV值
#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;#define WINDOW_NAME "【效果图窗口】" //为窗口标题定义的宏void pickHighLightFire(Mat& inputFrame, Mat& outputFrame);void on_MouseHandle(int event, in...原创 2021-07-20 23:48:08 · 510 阅读 · 2 评论 -
八、透视变换
解决问题的思路:就是找四个点的坐标完成透视变换。两个主要的函数:getPerspectiveTransform( InputArray src, InputArray dst );//获取透视变换矩阵warpPerspective( InputArray src, OutputArray dst,InputArray M, Size dsize,int flags = INTER_LINEAR,int borderMode = BORDER_CONSTANT, const Scala...原创 2021-07-17 15:25:01 · 414 阅读 · 0 评论 -
九、相机标定和角点检测
(一)接下来会用到的几个函数:1、归一化:normalize 函数介绍void normalize(InputArray src,OutputArraydst, double alpha = 1, double beta = 0, intnorm_type = NORM_L2, int dtype = -1, InputArray mask = noArray() )该函数归一化输入数组使它的范数或者数值范围在一定的范围内。src: 输入数组dst:输出数组,支持原地运算a..原创 2021-07-15 19:22:46 · 743 阅读 · 0 评论 -
七、简单绘图函数
1、直线函数:void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)参数介绍:1.img: 要绘制线段的图像。2.pt1: 线段的起点。3.pt2: 线段的终点。4.color: 线段的颜色,通过一个Scalar对象定义。5.thickness: 线条的宽度。6.lineType: 线段的类型。可以取值8,4原创 2021-07-15 16:18:29 · 471 阅读 · 2 评论 -
六、仿射变换
空间变换中的仿射变换对应着五种变换,平移,缩放,旋转,翻转,错切。而这五种变化由原图像转变到变换图像的过程,可以用仿射变换矩阵进行描述。而这个变换过程可以用一个2*3的矩阵与原图进行相乘得到。opencv通过两个函数的组合使用来实现仿射变换:一、获得仿射映射矩阵。这也有两种方法:1、三点法:getAffineTransform Mat img=getAffineTransform(const Point2f* src, const Point2f* dst)参数介...原创 2021-07-14 22:28:03 · 1424 阅读 · 0 评论 -
五、平滑处理与轮廓提取
(一)平滑处理1、高斯滤波器(个人感觉是最有用的)函数:GaussianBlur(InputArraysrc, OutputArraydst, Sizeksize, doubleX, doubleY=0, intborderType=BORDER_DEFAULT)src– 输入图片 dst–输出图片 ksize– 高斯内核大小。ksize.width和ksize.height允许不相同但他们必须是正奇数。或者等于0,由参数sigma的乘机决定。 X...原创 2021-07-13 20:45:21 · 1163 阅读 · 0 评论 -
四、形态学处理(膨胀,腐蚀,开闭运算)
膨胀与腐蚀能实现的功能:消除噪声、分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素、寻找图像中的明显的极大值区域或极小值区域、求出图像的梯度。注意:腐蚀和膨胀是对白色部分(高亮部分)而言的。膨胀是图像中的高亮部分进行膨胀,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,效果图拥有比原图更小的高亮区域。1、膨胀——dilate函数函数原型:void dilate( InputArray src, OutputArray dst, InputArray原创 2021-07-13 18:03:19 · 756 阅读 · 0 评论 -
三、几何学处理(缩放,拼接,裁剪)
1、图像的缩放函数原型:resize( InputArray src, OutputArray dst, Size dsize, double fx = 0, double fy = 0,int interpolation = INTER_LINEAR );其中:第一个参数src :输入的图像。第二个参数 dst: 输出的图像, dst的类型和src的类型一样。dst的大小又第3个或第四第五个参数决定。第三个参数 dsize :目标图像的大小。第四个参数 fx :在x轴上缩放比..原创 2021-07-13 15:34:11 · 216 阅读 · 1 评论 -
二、C++ opencv 色彩学处理(灰度处理,色域处理,阈值处理,颜色通道)
1、灰度处理,很简单直接代码。#include <opencv2/opencv.hpp>#include <iostream>int main(int argc, char const* argv[]){ cv::Mat img = cv::imread("D://RM//练习//灰度处理//opencv-logo.png", cv::IMREAD_GRAYSCALE); cv::imshow("hello", img); cv::waitKey原创 2021-07-12 17:40:30 · 1969 阅读 · 1 评论 -
一、opencv c++1)图像,视频的读取与保存
一、图像相关的操作1、图像的读取原函数:Mat imread( const String& filename, int flags = IMREAD_COLOR );说明:filename参数为图像文件的路径一定要注意你的图片的名称不要搞错,刚开始的时候图片名由于是英文的搞了好长时间才发现是图片名称打错了;flags参数为图像文件解析的方式,支持的方式有如下:IMREAD_UNCHANGED:不对图像文件进行任何转换,直接读取;IMREAD_GRAYSCALE:将图像转换为灰度图像原创 2021-07-11 17:07:37 · 1200 阅读 · 0 评论