![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Opencv
帆帆的杂货铺
这个作者很懒,什么都没留下…
展开
-
Opencv4.0学习记录(Day22 视频文件处理和保存)
视频处理与保存视频的属性,SD(标清),HD(高清),UHD(超清),蓝光。如何读取视频文件,以及读取视频文件的属性,衡量视频处理指标:FPS。保存视频时的编码格式。保存视频的实际size和create的size大小保持一致。void QuickDemo::video_demo(Mat &image) { //VideoCapture capture(0);//调用摄像头 VideoCapture capture("E:/images/01.mp4");//调用视频文件...原创 2022-05-09 09:24:44 · 217 阅读 · 2 评论 -
Opencv4.0学习记录(Day21 视频文件摄像头使用)
函数:VideoCaptureVideoCapture capture(0);//调用摄像头VideoCapture capture("E:/images/01.mp4");//调用视频文件总代码:void QuickDemo::video_demo(Mat &image) { //VideoCapture capture(0);//调用摄像头 VideoCapture capture("E:/images/01.mp4");//调用视频文件 Mat frame; whi.原创 2022-05-08 10:08:49 · 740 阅读 · 0 评论 -
Opencv4.0学习记录(Day20 图像翻转和任意角度旋转)
函数:flip//参数1原图片,参数2翻转后的图片,参数3如何翻转(有3种)flip(image, dst, -1);void QuickDemo::flip_demo(Mat &image) { Mat dst; //flip(image,dst,0);//上下翻转 //flip(image, dst, 1);//左右翻转 flip(image, dst, -1);//180°旋转 imshow("图像翻转",dst);}函数:warpAffine//参数1原.原创 2022-05-03 21:22:43 · 755 阅读 · 0 评论 -
Opencv4.0学习记录(Day19 图像放缩与插值)
函数:resize(image,zoomin,Size(w/2,h/2),0,0,INTER_LINEAR);//INTER_LINEAR线性插值介绍基本的图像变换大小的方法。图像的差值处理主要有线性、双线性差值、卢卡斯差值、双立方差值。void QuickDemo::resize_demo(Mat &image) { Mat zoomin, zoomout; int w = image.cols; int h = image.rows; resize(im...原创 2022-05-03 16:33:19 · 1769 阅读 · 0 评论 -
Opencv4.0学习记录(Day18 图像像素类型转换与归一化)
1、什么是特征归一化?数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。2、为什么要进行特征归一化?(1)对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。(2)从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,...原创 2022-05-03 14:52:46 · 723 阅读 · 0 评论 -
Opencv4.0学习记录(Day17 鼠标操作与响应)
用到的API函数:setMouseCallback("鼠标绘制",on_draw,(void*)(&image));其中:(1)“鼠标绘制”是绘制窗口(2)on_draw为目标函数(3)图片的指针复习了之前学过的克隆(clone)和复制(copy_To),其中他两的区别是克隆是开辟一个新的内存空间,将原来的信息和内容全部复制下来,相当于重新“造一个”事物。而复制是不重新开辟新的内存空间在原来的内存空间里,将一张图片的信息复制到另一张图片上。(这样就可以达到消...原创 2022-05-03 09:27:27 · 680 阅读 · 0 评论 -
Opencv4.0学习记录(Day16 多边形填充与绘制)
基础知识:嵌套容器C++std::Vector<Vector<数据类型>> 容器名;1.填充函数 fillPoly(图像1, 容器, Scalar(255, 255, 0), 8, 0);2.填充线 polylines(图像2, 容器2, true, Scalar(0, 0, 255), 2, LINE_AA, 0);3.绘线+填充source code(1)创建一个512*512的矩阵Mat canvas = Mat::zeros(Size(512,转载 2022-04-25 16:36:19 · 228 阅读 · 0 评论 -
Opencv4.0学习记录(Day15 随机数与随机颜色)
此类用于产生随机数rng.uniform(0, 255); 在[0,255)区间,随机生成一个整数void QuickDemo::random_drawing_demo() { Mat canvas = Mat::zeros(Size(512,512),CV_8UC3); int w = canvas.cols; int h = canvas.rows; RNG rng(12345);//构造方法设定一个具体值,表示下面代码每次生成的结果都是一样的 while (true) {...原创 2022-04-25 15:40:00 · 136 阅读 · 0 评论 -
Opencv4.0学习记录(Day14 图像几何形状绘制)
void QuickDemo::drawing_demo(Mat &image) { Rect rect; rect.x = 150; rect.y = 300; rect.width = 100; rect.height = 100; Mat by = Mat::zeros(image.size(),image.type()); rectangle(by,rect,Scalar(255,0,0),2,8,0);//绘制矩形 circle(by,Point(200,350),15,.原创 2022-04-24 22:19:08 · 1446 阅读 · 0 评论 -
Opencv4.0学习记录(Day13 图像像素值统计)
分别定义双精度型变量 minv和maxv。指针变量minLoc,maxLoc;因为这图片是多通道的,所以使用一个容器mv装取数值,并且用split分离图片到MV中,通过for循环操作,遍历图片信息,并且打印信息到终端。图像信息包括,方差,均值,大小。void QuickDemo::pixel_statistic_demo(Mat &image) { double minv, maxv;//定义最值 Point minLoc, maxLoc;//定义最值地址 vector&...原创 2022-04-19 20:11:15 · 2535 阅读 · 0 评论 -
Opencv4.0学习记录(Day12 图像色彩空间转换)
【1】inRange()函数 OpenCV中的inRange()函数可实现二值化功能(这点类似threshold()函数),更关键的是可以同时针对多通道进行操作,使用起来非常方便!主要是将在两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色(0),该功能类似于之间所讲的双阈值化操作。函数原型(C++):void inRange(InputArray src, InputArray lowerb,InputArray upperb, OutputArray ds...原创 2022-04-18 22:18:52 · 113 阅读 · 0 评论 -
Opencv4.0学习记录(Day11 通道分离和合并)
图像通道操作 函数1:split(const Mat& src,Mat *mvbegin) 第一个参数:为要进行分离的图像矩阵,是一幅多通道的图像; 第二个参数:可以是Mat数组的首地址,或者是容器vector<Mat>对象; 作用:将图像拆分成单个通道 函数2:void merge(const Mat* mv,size_t count,outputarray dst); void merge...原创 2022-04-18 20:09:12 · 234 阅读 · 0 评论 -
Opencv4.0学习记录(Day10 图像像素的逻辑操作)
rectangle函数用法+图像像素的逻辑操作原创 2022-04-18 10:22:31 · 74 阅读 · 0 评论 -
Opencv4.0学习记录(Day9 OpenCV自带颜色表操作)
OpenCV自带颜色表操作由于我使用的是opencv4.0版本所以有几种颜色表是无法使用的,所以被我注释掉啦。void QuickDemo::color_style_demo(Mat &image) { int colormap[] = { COLORMAP_AUTUMN , COLORMAP_BONE, //COLORMAP_CIVIDIS, //COLORMAP_DEEPGREEN, COLORMAP_HOT, COLORMAP_HSV, //COLORM原创 2022-04-18 09:06:28 · 152 阅读 · 0 评论 -
Opencv4.0学习记录(Day8 键盘响应操作)
键盘响应操作本节介绍通过键盘输入,终端能够读取响应的信息。void QuickDemo::key_demo(Mat &image) { Mat dst = Mat::zeros(image.size(), image.type());//对图像进行操作是一定要新建zeros,要不然没法运算 while (true) { int c = waitKey(100);//等待100ms,如果键盘没有输入返回值为-1,当键盘有输入返回对应的码值(在做视频分析是这里需要改为(waitKe原创 2022-04-17 21:22:56 · 1045 阅读 · 0 评论 -
Opencv4.0学习记录(Day7 滚动条操作演示-参数传递度)
(1)功能说明:addWeighted()函数是将两张相同大小,相同类型的图片融合的函数。他可以实现图片的特效调节图片的亮度和对比度。(2)API详解:void cvAddWeighted( const CvArr* src1, double alpha,const CvArr* src2, double beta,double gamma, CvArr* dst );参数1:src1,第一个原数组.参数2:alpha,第一个数组元素权重参数3:src2第二个原数组参数4:beta,第二个数组原创 2022-04-17 17:48:47 · 79 阅读 · 0 评论 -
Opencv4.0学习记录(Day6 滚动条操作演示-调整图像亮度)
本节介绍怎么通过createTrackbar来设置一个进度条,实现图片的亮度调节。Mat src, dst, m;int lightness = 50;//亮度初值static void on_track(int,void *) { m = Scalar(lightness,lightness,lightness);//创建调整亮度的值 add(src, m,dst);//进行加法运算 imshow("亮度调整", dst);//显示图片,前提条件这些窗口都要命名为“亮度调整” wait.原创 2022-04-17 11:11:33 · 1155 阅读 · 0 评论 -
Opencv4.0学习记录(Day5 图像像素的算数操作)
对图像像素进行加减乘除的运算(add,subtract,multiply,divide)可以利用opencv现成的API同时我们也可以利用for循环来实现加减乘除的运算(其中用到了saturate_cast函数它的作用是当数据运算小于0是按0来运算,当运算结果大于255是按255来运算)。void QuickDemo::operators_demo(Mat &image){ Mat dst; Mat m = Mat::zeros(image.size(),image.ty...原创 2022-04-17 09:41:54 · 1559 阅读 · 0 评论 -
Opencv4.0学习记录(Day4 图像像素的读写操作)
(1)方法一:使用for循环利用访问数组的原理对图像的像素进行读写操作,其中用到了image.at<uchar>(col,row) 来获取图像像素的位置坐标(单通道)。当图像是三通道的时候用到了image.at<Ver3b>(col,row)来获取图像像素的位置坐标(三通道)。#include<quickopencv.h>#include<iostream>using namespace std;void QuickDemo::pixel_vis原创 2022-04-14 22:25:37 · 1089 阅读 · 0 评论 -
Opencv4.0学习记录(Day3 图像对象的创建与赋值)
第三节课 在原课程代码上的quickdemo.cpp文件中有编写了 QuickDemo类的对象函数mat_creat_demo(万物可demo),用来实现图像对象的创建和赋值,以及对图像的克隆、复制,并将图像利用cout(iostream封装好的对象,需要使用using namespace std的命名空间)来将图像打印出来,我觉得和C语言中的printf有相似之处。#include<quickopencv.h>#include<iostream>usin...原创 2022-04-14 08:05:23 · 1036 阅读 · 0 评论 -
Opencv4.0学习记录(Day2 图像色彩空间转)
第二节课 main.c主函数 #include <opencv2/opencv.hpp>//opencv的头文件#include<iostream>#include<quickopencv.h>using namespace cv;using namespace std;int main(int argc,char** argv){ Mat img = imread("E:/images/hist_01.jpg");//imrea...原创 2022-04-13 19:07:50 · 91 阅读 · 0 评论 -
Opencv4.0学习记录(Day1 图像读取与显示)
课程学习:哔哩哔哩(贾志刚老师)第一节课#include <opencv2/opencv.hpp>//opencv的头文件#include<iostream>using namespace cv;using namespace std;int main(int argc,char** argv){ Mat img = imread("E:/images/hist_01.jpg",IMREAD_GRAYSCALE);//imread函数读取一张图片 Mat定义原创 2022-04-12 20:06:23 · 1139 阅读 · 0 评论 -
Opencv4.0学习记录(opencv4.0+vs2015环境配置)
Opencv4.0学习记录(opencv4.0+vs2015环境配置)原创 2022-04-11 19:50:43 · 1077 阅读 · 0 评论