【Opencv3学习笔记 4】图像操作方法学习(C++源代码实现)

opencv双目测距-SGBM、BM算法输出深度图完整程序(三角视差测距法) 前言 本篇文章是在高博的一起做RGB-D SLAM 系列 的基础上修改代码,增加了单、双目接口以及实时点云图构建和路径显示功能,并利用词袋模型进行闭环检测,实现了一个简易单双目slam系统。 阅读详情


所谓的图像处理方法,就是把图像以真正意义上的“ 图像”来进行处理,而不是作为抽象的数组意义。
我们使用图像结构与形态学中所定义的高层处理方法来完成特殊任务,比如滤波、腐蚀、膨胀等等操作。

1. 线性滤波

图像滤波的目的有两个:

  1. 抽出对象的特征作为图像识别的特征模式
  2. 消除噪音

要求也有两个:

  1. 不能损害原图的轮廓及边缘等重要信息
  2. 使得视觉效果好

几种常见的线性滤波器:

  • 低通滤波器:只允许低频率通过
  • 高通滤波器:只允许高频率通过
  • 带通滤波器:允许一定范围
  • 带阻滤波器:不允许一定范围
  • 全通滤波器:允许所有,仅改变相位关系
  • 陷滤波器:组织一个狭窄范围通过

大多数情况下我们可以认为:低通就是模糊,高通就是锐化

方框滤波

#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
using namespace cv; 

//-----------------------------------【main( )函数】--------------------------------------------
//	描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{ 
	// 载入原图
	Mat image=imread("1.jpg"); 

	//创建窗口
	namedWindow( "方框滤波【原图】" ); 
	namedWindow( "方框滤波【效果图】"); 

	//显示原图
	imshow( "方框滤波【原图】", image ); 

	//进行方框滤波操作
	Mat out; 
	boxFilter( image, out, -1,Size(5, 5)); 

	//显示效果图
	imshow( "方框滤波【效果图】" ,out ); 

	waitKey( 0 );     
} 

在这里插入图片描述

均值滤波

#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
using namespace cv; 

//-----------------------------------【main( )函数】--------------------------------------------
//		描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{ 
	//【1】载入原始图
	Mat srcImage=imread("1.jpg"); 

	//【2】显示原始图
	imshow( "均值滤波【原图】", srcImage ); 

	//【3】进行均值滤波操作
	Mat dstImage; 
	blur( srcImage, dstImage, Size(7, 7)); 

	//【4】显示效果图
	imshow( "均值滤波【效果图】" ,dstImage ); 

	waitKey( 0 );     
} 

在这里插入图片描述

高斯滤波

#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
using namespace cv; 

//-----------------------------------【main( )函数】--------------------------------------------
//	描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{ 
	// 载入原图
	Mat image=imread("1.jpg"); 

	//创建窗口
	namedWindow( "高斯滤波【原图】" ); 
	namedWindow( "高斯滤波【效果图】"); 

	//显示原图
	imshow( "高斯滤波【原图】", image ); 

	//进行高斯滤波操作
	Mat out; 
	GaussianBlur( image, out, Size( 5, 5 ), 0, 0 ); 

	//显示效果图
	imshow( "高斯滤波【效果图】" ,out ); 

	waitKey( 0 );     
} 

在这里插入图片描述

2. 非线性滤波

非线性滤波,如中值滤波器(对椒盐噪点有更好的清除作用)有时能达到更好的效果

中值滤波

#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 

//-----------------------------------【命名空间声明部分】---------------------------------------
//	描述:包含程序所使用的命名空间
//-----------------------------------------------------------------------------------------------  
using namespace cv; 

//-----------------------------------【main( )函数】--------------------------------------------
//	描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{ 
	// 载入原图
	Mat image=imread("1.jpg"); 

	//创建窗口
	namedWindow( "中值滤波【原图】" ); 
	namedWindow( "中值滤波【效果图】"); 

	//显示原图
	imshow( "中值滤波【原图】", image ); 

	//进行中值滤波操作
	Mat out; 
	medianBlur ( image, out, 7);

	//显示效果图
	imshow( "中值滤波【效果图】" ,out ); 

	waitKey( 0 );     
} 

在这里插入图片描述

双边滤波

#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 

//-----------------------------------【命名空间声明部分】---------------------------------------
//	描述:包含程序所使用的命名空间
//-----------------------------------------------------------------------------------------------  
using namespace cv;

//-----------------------------------【main( )函数】--------------------------------------------
//	描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main()
{
	// 载入原图
	Mat image = imread("1.jpg");

	//创建窗口
	namedWindow("双边滤波【原图】");
	namedWindow("双边滤波【效果图】");

	//显示原图
	imshow("双边滤波【原图】", image);

	//进行双边滤波操作
	Mat out;
	bilateralFilter(image, out, 25, 25 * 2, 25 / 2);

	//显示效果图
	imshow("双边滤波【效果图】", out);

	waitKey(0);
}

在这里插入图片描述

3. 形态学滤波

腐蚀和膨胀可以实现多种多样的功能:

  • 消除噪音
  • 分割元素
  • 寻找极值区域
  • 求出梯度

膨胀

使用dilate()函数

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

//-----------------------------------【命名空间声明部分】---------------------------------------
//	描述:包含程序所使用的命名空间
//-----------------------------------------------------------------------------------------------  
using namespace std;
using namespace cv;

//-----------------------------------【main( )函数】--------------------------------------------
//	描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main(   )
{

	//载入原图  
	Mat image = imread("1.jpg");

	//创建窗口  
	namedWindow("【原图】膨胀操作");
	namedWindow("【效果图】膨胀操作");

	//显示原图
	imshow("【原图】膨胀操作", image);

	//进行膨胀操作 
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	Mat out;
	dilate(image, out, element);
	
	//方法二: 使用morphologyEx
	morphologyEx(image, image, MORPH_DILATE, element);
	
	//显示效果图 
	imshow("【效果图】膨胀操作", out);

	waitKey(0); 

	return 0;
}

在这里插入图片描述

腐蚀

使用erode()函数

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;

//-----------------------------------【main( )函数】--------------------------------------------
//	描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main(   )
{
	//载入原图  
	Mat srcImage = imread("1.jpg");
	//显示原图
	imshow("【原图】腐蚀操作", srcImage);
	//进行腐蚀操作 
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	Mat dstImage;
	erode(srcImage, dstImage, element);
	
	//方法二: 使用morphologyEx
	morphologyEx(image, image, MORPH_ERODE, element);

	//显示效果图 
	imshow("【效果图】腐蚀操作", dstImage);
	waitKey(0); 

	return 0;
}

在这里插入图片描述

开运算

就是先腐蚀再膨胀的过程,用来消除小物体,再纤细点分离物体,在平滑边界的同时不改变面积

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;

//-----------------------------------【main( )函数】--------------------------------------------
//		描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main()
{
	//载入原始图   
	Mat image = imread("1.jpg");  //工程目录下应该有一张名为1.jpg的素材图
	//创建窗口   
	namedWindow("【原始图】开运算");
	namedWindow("【效果图】开运算");
	//显示原始图  
	imshow("【原始图】开运算", image);
	//定义核
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	//进行形态学操作
	morphologyEx(image, image, MORPH_OPEN, element);
	//显示效果图  
	imshow("【效果图】开运算", image);
	waitKey(0);
	return 0;
}

在这里插入图片描述

闭运算

就是先膨胀再腐蚀的过程,消除小黑洞

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;


//-----------------------------------【main( )函数】------------------------------------------
//		描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{
	//载入原始图   
	Mat image = imread("1.jpg");  //工程目录下应该有一张名为1.jpg的素材图
	//创建窗口   
	namedWindow("【原始图】闭运算");  
	namedWindow("【效果图】闭运算");  
	//显示原始图  
	imshow("【原始图】闭运算", image);  
	//定义核
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));  
	//进行形态学操作
	morphologyEx(image, image, MORPH_CLOSE, element);
	//显示效果图  
	imshow("【效果图】闭运算", image);  

	waitKey(0);  

	return 0;  
}

在这里插入图片描述

形态学梯度

形态学梯度是膨胀和腐蚀图的差

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;


//-----------------------------------【main( )函数】------------------------------------------
//		描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{
	//载入原始图   
	Mat image = imread("1.jpg");  //工程目录下应该有一张名为1.jpg的素材图
	//创建窗口   
	namedWindow("【原始图】形态学梯度");  
	namedWindow("【效果图】形态学梯度");  
	//显示原始图  
	imshow("【原始图】形态学梯度", image);  
	//定义核
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));  
	//进行形态学操作
	morphologyEx(image, image, MORPH_GRADIENT, element);
	//显示效果图  
	imshow("【效果图】形态学梯度", image);  

	waitKey(0);  

	return 0;  
}

4. 漫水填充

用特定的颜色填充连通区域,用来标记或者分离图像的一部分,也可以用来获取掩码区域。

#include <opencv2/opencv.hpp>  
#include <opencv2/imgproc/imgproc.hpp>  
using namespace cv;  



//-----------------------------------【main( )函数】--------------------------------------------  
//      描述:控制台应用程序的入口函数,我们的程序从这里开始  
//----------------------------------------------------------------------------------------------- 
int main( )
{    
	Mat src = imread("1.jpg"); 
	imshow("【原始图】",src);
	Rect ccomp;
	floodFill(src, Point(50,300), Scalar(155, 255,55), &ccomp, Scalar(20, 20, 20),Scalar(20, 20, 20));
	imshow("【效果图】",src);
	waitKey(0);
	return 0;    
}  

在这里插入图片描述

5. 图像金字塔与图片尺寸缩放

  • resize()函数
  • pyrUP()和pyrDown()函数,上采样和下采样

图像金字塔一般有:

  • 高斯金字塔
  • 拉普拉斯金字塔

resize()函数示例

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;

//-----------------------------------【main( )函数】--------------------------------------------
//		描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main()
{
	//载入原始图   
	Mat srcImage = imread("1.jpg");  //工程目录下应该有一张名为1.jpg的素材图
	Mat tmpImage, dstImage1, dstImage2;//临时变量和目标图的定义
	tmpImage = srcImage;//将原始图赋给临时变量

	//显示原始图  
	imshow("【原始图】", srcImage);

	//进行尺寸调整操作
	resize(tmpImage, dstImage1, Size(tmpImage.cols / 2, tmpImage.rows / 2), (0, 0), (0, 0), 3);
	resize(tmpImage, dstImage2, Size(tmpImage.cols * 2, tmpImage.rows * 2), (0, 0), (0, 0), 3);

	//显示效果图  
	imshow("【效果图】之一", dstImage1);
	imshow("【效果图】之二", dstImage2);

	waitKey(0);
	return 0;
}

在这里插入图片描述

pyrUP()和pyrDown()函数示例

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
	//载入原始图   
	Mat srcImage = imread("1.jpg");  //工程目录下应该有一张名为1.jpg的素材图
	Mat tmpImage, dstImage;//临时变量和目标图的定义
	tmpImage = srcImage;//将原始图赋给临时变量

	//显示原始图  
	imshow("【原始图】", srcImage);
	//进行向上取样操作
	pyrUp(tmpImage, dstImage, Size(tmpImage.cols * 2, tmpImage.rows * 2));
	//显示效果图  
	imshow("【效果图1】", dstImage);

	pyrDown(tmpImage, dstImage, Size(tmpImage.cols / 2, tmpImage.rows / 2));
	//显示效果图  
	imshow("【效果图2】", dstImage);

	waitKey(0);

	return 0;
}

6. 阈值化

Threshold()函数、自适应阈值操作adaptiveThreshold()函数


#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
using namespace cv;
using namespace std;

#define WINDOW_NAME "【程序窗口】"        //为窗口标题定义的宏 


//-----------------------------------【全局变量声明部分】--------------------------------------
//		描述:全局变量的声明
//-----------------------------------------------------------------------------------------------
int g_nThresholdValue = 100;
int g_nThresholdType = 3;
Mat g_srcImage, g_grayImage, g_dstImage;


//-----------------------------------【main( )函数】--------------------------------------------
//		描述:控制台应用程序的入口函数,我们的程序从这里开始执行
//-----------------------------------------------------------------------------------------------
int main()
{
	
	//【1】读入源图片
	g_srcImage = imread("1.jpg");
	if (!g_srcImage.data) { printf("读取图片错误,请确定目录下是否有imread函数指定的图片存在~! \n"); return false; }
	imshow("原始图", g_srcImage);

	//【2】存留一份原图的灰度图
	cvtColor(g_srcImage, g_grayImage, COLOR_RGB2GRAY);

	//【3】创建窗口并显示原始图
	namedWindow(WINDOW_NAME, WINDOW_AUTOSIZE);

	//调用阈值函数
	threshold(g_grayImage, g_dstImage, g_nThresholdValue, 255, g_nThresholdType);

	//更新效果图
	imshow(WINDOW_NAME, g_dstImage);
	
	waitKey();

	return 0;

}


C++下OpenCV学习笔记 ----图像叠加与混合 C++下OpenCV学习笔记 ----图像叠加与混合 文章目录 一.感兴趣区域:ROI 二.线性混合操作 三.计算数组的加权和:addWeighted函数 四.颜色通道的分离与合并 五.图像的亮度和对比度 阅读详情

相关推荐

【OpenCV3编程入门学习笔记】——第1章 邂逅OpenCV

邂逅OpenCV 文章目录邂逅OpenCV前言1.1 OpenCV周边概念认知1.1.1 图像处理、计算机视觉与OpenCV1.1.2 OpenCV概述1.1.3 起源及发展1.1.4 应用概述1.2 OpenCV基本架构分析1.3 OpenCV3带来了什么1.4 OpenCV的下载、安装与配置1.5 快速上手OpenCV图像处理前期准备1.5.1 程序一 图像显示1.5.2 程序二 图像腐蚀1.5.3 程序三 图像模糊1.5.4 程序四 canny边缘检测1.6 OpenCV视频操作基础1.6.1 读取并

繁臻的小窝 1412

opencv的pyrDown()函数

 int main(){  Mat src = imread("test.jpg");//载入原始图     Mat src1, src2, src3, src4,dst;  src1 = src;  namedWindow("效果图窗口", 1);//定义窗口  pyrDown(src1, dst, Size(src1.cols / 2, src1.rows / 2));  i

cqltbe131421的博客 1980

opencv学习笔记

对于原图像中的每个像素点 (x, y),通过某种变换函数找到它在目标图像中对应的新位置 (x’, y’)。滤波的本质:通过一个小的滤波器(或称为核、模板)在图像上滑动,对每个像素邻域进行数学运算,得到新的像素值。基本原理:Laplacian是二阶微分算子,直接计算图像的拉普拉斯变换,对噪声更敏感但能检测更细的边缘。基本原理:Scharr算子是Sobel算子的改进版本,具有更高的旋转对称性和更好的边缘检测精度。原理:检查每个像素点,如果它在梯度方向上的幅值不是局部最大值,则将其抑制(设为0)。

weixin_37079656的博客 926

C++图像金字塔下采样的函数

OpenCV 中用于图像金字塔下采样的函数

qq_46107892的博客 511

图像处理--OpenCV学习笔记

OpenCV

Prime me的博客 3471

OpenCV4学习笔记(1)——图像读取、复制和创建

开篇:作为一名光电信息科学与工程的在读大三学生,我选择了光电视觉方向,又对于图像处理方向感兴趣,所以开始了学习OpenCV的漫漫长路。因为疫情在家呆着,就来整理一下平时学习的笔记注释,借助优快云这个平台记录下我的学习日常,也有利于以后回顾知识点的方便。学习OpenCV其实有一段时间了,但是之前都是很零散的学习,而且是以python为主要学习语言,没有形成完整的知识体系,所以从上个月开始,我加入了...

邱小兵的博客 1601

利用C++中的opencv进行图像拼接

这篇文章依旧是记录采用C++复现图像拼接过程解决遇到的问题。因为自己没有学过C++,大学学的C考完试立马还给老师了,Python也是现学的,只会一点点MATLAB,所以遇到的问题和解决都很基础,目的是自己做一些记录,并分享给与我相同的图像入门小白,若有错误还希望大佬们指正。 拼接的主要参考文献: OpenCV常用图像拼接方法(二):基于模板匹配拼接_Color Space的博客-优快云博客_图像拼接素材 图像拼接的程序的目的是将imgL(1)与imgR(2)拼接起来,方法是通过截取imgL中的一小.

MOZHOUH的博客 7947

OpenCV实战——根据立体图像计算深度信息

人类可以用两只眼睛构建三个维度世界,而为机器人配备两个摄像头时,机器人同样也可以做到这一点,这称为立体视觉 (stereo vision)。安装在设备上的一对摄像机可以观察同一场景并由固定基线(即两个摄像机之间的距离)分隔。本节将介绍如何通过计算两个视图之间的深度对应关系根据两个立体图像计算深度图像。

盼小辉丶的博客 1万+

C++和Opencv4.5 实现全景图像拼接

前言 最近刚下了最新版的opencv4.5,急不可待的试下操作,就用了opencv自带的Stitcher类拼接下图像,结果傻眼了,程序显示Stitcher没有createDefault成员,看了好久,终于找到了解决方法。 Stitcher原理 Stitcher类程序流程: 对图像特征点进行检测,默认是 surf(Speeded Up Robust Features)算法 对图像的特征点进行匹配 得到正确的图像序列。 求旋转矩阵 拼接 环境 OpenCV:4.5.0 VS:2019 C++ 平台:Wind

baidu_35536188的博客 6272

【OpenCV • c++】图像几何变换 | 图像平移

图像的几何变换是指在不改变图像像素值的前提下对图像像素进行空间几何变换,常见的几何变换有距离变换、坐标映射、平移、镜像、旋转、缩放、仿射交换等等。图像的几何变换是图像处理和分析的基础,应用广泛。

Ceylan__的博客 3660

学习Opencv3的配套源代码

学习Opencv3的配套源代码,有需要的同学可以下载

Opencv4 c/c++学习笔记(一)

Opencv4 c/c++学习笔记(一) 初入计算机视觉,做做笔记,积极日常 为了便于运用和记忆,注释较为繁琐嘻嘻 学习参考资料:opencv4官网tutorial和《学习OpenCV3》 // 2020.12.22 显示一张图片 #include "opencv2/opencv.hpp" //包含所有模块的头文件,占用运行内存缺点 int main() { //地址用‘/’,根据载入的图片(多格式)申请图像需要的内存 //cv::Mat图像在生命周期结束时自动释放 cv::M

weixin_45641675的博客 3268

基于OpenCV的云台控制系统

使用VC设计了基于OpenCV的摄像头云台控制系统 实现了运动跟踪、运动报警、抓拍、手动云台控制、云台状态显示、摄像头设置和实时曲线绘制等功能。

OpenCV C++学习笔记

warpAffine函数是OpenCV中的一个函数,用于对图像进行仿射变换,包括旋转、缩放、平移等操作。该函数可以对图像进行二维或三维的仿射变换,支持多种插值方法和输出图像格式。warpAffine是OpenCV中的一个函数,用于对图像进行仿射变换,包括旋转、缩放、平移等操作。该函数可以对图像进行二维或三维的仿射变换,支持多种插值方法和输出图像格式。

lt405514623的博客 2076

特斯拉 Model 3解析(八)全面拆解特斯拉自动驾驶大脑:AP控制器硬核技术解析

算力极限:双FSD = 144 TOPS,专为AI推理优化。存储架构:LPDDR4 + NAND + NOR,保证高速/可靠启动。通信架构:以太网传视频,CAN传控制,TSN保障实时性。感知输入:多路摄像头 + 高速SerDes,满足全景感知。电源设计:功率模块+被动元件海洋,稳定性优先。功能安全:双芯片冗余 + GPS + 紧急呼叫,容错率极高。🎯 在我看来,特斯拉AP控制器就是一台“车载超算”,它在电源设计、存储架构和功能安全上远超一般新势力方案。

weixin_43199439的博客 1447

恶意流量检测数据集

对当前公开的恶意流量相关数据集进行归类总结,持续更新相关论文

tyutwuxuan的博客 1944

【opencv4.3.0教程】01之opencv介绍与配置(win10+VS2015+OpenCV4.3.0)

一、前言 OpenCV已经出到4.3.0版本,自问世以来,受到广大好友的喜爱。 其实我之前已经写了OpenCV3.1.0的教程,但那个时候,其实对OpenCV了解不系统,对于OpenCV没有一个整体的认识。这次,我会写更全面的内容,章节分类也更加具体。 如果你目前只是想快速入门opencv,推荐你看: 【opencv学习之路】:https://blog.youkuaiyun.com/shuiyixin/article/details/85648310 这里会告诉你学习历程、以及opencv3.1.0教程

水亦心的博客 9634

Mixly米思齐——超声波测距控制LED灯

为了更加地贴近中小学信息技术的课程,我们用米思齐做了一个实验——根据距离的远近开启警报灯(利用超声波测出距离)。 实验硬件准备 arduino uno R3 、USB 数据线、YFROBOT UNO I/O扩展板、YFROBOT超声波传感器模块、模块3P连接线x1、LED灯x1 硬件连接图如下: 在arduino uno R3 上再接一个LED灯,实物图如下: 在本次实验中,LE...

Janise_的博客 9978

Opencv学习笔记之OpenCV介绍

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类,同时提供了Python、Ruby、MATLAB等语言的接口,实现了和计算机视觉方面的很多通用算法。OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言。该库也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的接口。

浩瀚之水的专栏 4527

macOS安装Cplex+yalmip

macOS安装Cplex+yalmip

DS 4250

FastAPI + Layui:打造企业级敏捷开发后台管理系统

本文详细介绍了如何使用FastAPI和Layui构建高效的企业级后台管理系统。FastAPI提供高性能的异步API支持,而Layui则简化了前端开发流程,两者结合可实现快速开发和部署。文章涵盖了从环境搭建、核心组件开发到性能优化的全流程,特别适合需要敏捷开发的企业项目。

weixin_29045585的博客 555

OpenCV4.8 入门学习笔记(一)

视图 -> 其他窗口 -> 属性管理器 ->​ 属性页链接器下输入的。

fantasticHQ的博客 8156

ORB-SLAM3代码详解 - 第 18 篇 · Atlas 多地图系统、地图保存与全系统调优

会跑:理解三线程架构与数据流(01/08/10/13),能编译、配参、复现各数据集结果。会改:掌握相机模型抽象(05)、g2o 顶点与边(14)、预积分(15),能接入新传感器、新相机、新约束。会调:理解每个参数背后的物理含义与耦合(03/15/16/18),能针对自己的平台与场景做精度/实时/鲁棒的权衡。ORB-SLAM3 的价值不止于一个可用的 SLAM 系统,更在于它是一套工程化的几何状态估计模板:清晰的模块边界、可替换的相机/传感器抽象、紧耦合优化的标准范式。

PX4-SLAM-PNC 172

c++ opencv3显示拖动图片_图像处理:OpenCV3源代码文件解析

引言结合冈萨雷斯的《数字图像处理》和Opencv3.0,学习图像处理算法有一段时间了,知道了函数怎么使用,但不知道opencv所用的函数源代码是如何编写的,“知其然,也要知其所以然”,闲暇之日,研究下源代码的编写,纵然不能全部看懂或者掌握,有收获就是好的。有诗为证,诗曰:图像处理有本质,二维数组是内涵。卷积频域来滤波,轮廓分割形态学。书山有路勤为径,兴趣使然来做舟。为识庐山真面目,学习源码实践多。...

weixin_36233098的博客 447

高电压技术的面试内容整理(详细版本:57题)

涵盖了高电压技术的关键领域,包括气体放电的物理过程、液体和固体介质的绝缘特性、高压外绝缘的分类与特性、电气设备绝缘试验的方法与原理、电力系统的防雷保护措施,以及内部过电压的产生、影响与限制方法,为理解和应对高电压环境下的电气问题提供了系统的知识框架。通过深入探讨气体放电理论、介质极化与损耗、绝缘子的电气特性、绝缘试验技术、防雷策略以及内部过电压的管理。

weixin_44808274的博客 777

【Coze】在Coze平台使用源码创建工作流

Coze平台提供低代码工作流搭建功能,支持通过图形化界面快速构建自动化任务流程。用户可通过资源库创建工作流,导入JSON配置生成节点结构,连接起始节点并配置输入/输出字段(需定义数据类型)。平台提供试运行功能验证流程执行,支持可视化调试与发布上线。该方案适用于快速部署标准化业务逻辑,实现端到端的自动化处理。

Mr数据杨 2433
上一篇: 【Opencv3学习笔记 3】常用数据结构以及图像操作函数
下一篇: matplotlab的简单使用+引力波绘制
Andy in boots
博客等级 码龄7年 73粉丝 69原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值