OpenCV Core组件操作

opencv3学习笔记(三)——core组件之模块operations on array 1.引言operations on array:数组操作。从官网上及源码上我们可以看到该模块声明了5个类、94个函数、重载了6个函数、定义了9个枚举类型。 详细链接:官网详解2.类声明3 函数声明3.1 void cv::absdiff ()3.1.1 函数用途absdiff:absolute difference 该函数用于计算两个矩阵或一个矩阵与一个数的差的绝对值3.1.2 函数原型void 阅读详情

最近在复习opencv,整理一下基础知识。今天把Core组件的相关操作记录下来,常用的操作有以下几个:

Mat结构体

 

访问像素

Matimage;

Uchar*data = image.ptr<uchar>(i);

 

Mat_<Vec3b>::iteratorit = image.begin<Vec3b>();

(*it)[0];

 

Image.at<Vec3b>(i,j)[0];

图像叠加、混合

Matimage;

Image= iamge(Rect(500,250,logo.cols,log.rows));

Image= image(Range(250,250+logoimage.rows), Range(250,250+logoimage.cols));

logoImage.copyTo(image,mask);

addWeighted();

通道分离、合并

Spilt();

Merge();

对比度、亮度调节

 

下面记录一个VS下面的例子,方便以后利用、查看。

#include<iostream>
#include "classify.h"
#include<math.h>
#define max(a,b) a>b?a:b
using namespace std;
#define WINDOW_NAME "融合"
int g_nAl = 0;
void on_Trackbar(int a, void* c)		//添加进度条
{
	cv::Mat image1 = cv::imread("D:\\OpenCVprivate\\4.jpg");
	cv::resize(image1, image1, cv::Size(720, 1280), 0.0, 0.0, CV_INTER_NN);
	cv::Mat imageResult;
	cv::Mat image2 = cv::Mat::zeros(image1.size(), image1.type());
	try
	{
		addWeighted(image1, g_nAl / 100.0, image2, 1 - g_nAl / 100.0, 20.0, imageResult);
	}	
	catch (...)
	{
		
	}
	cv::imshow("WINDOW_NAME", imageResult);
	cv::waitKey(10);
}

void imageAdd()//图像融合
{
	cv::Mat image1 = cv::imread("D:\\OpenCVprivate\\3.jpg");
	cv::Mat image2 = cv::imread("D:\\OpenCVprivate\\5.jpg");
	cv::Mat image3 = cv::imread("D:\\OpenCVprivate\\4.jpg");
	cv::resize(image1, image1, cv::Size(869, 1200), 0.0, 0.0, CV_INTER_NN);
	cv::resize(image2, image2, cv::Size(300, 250), 0.0, 0.0, CV_INTER_NN);
	cv::resize(image3, image3, cv::Size(869, 1200), 0.0, 0.0, CV_INTER_NN);
	cv::Mat image4 = image1(cv::Rect(500, 300, image2.cols, image2.rows));
	image2 = cv::min(image4, image2);
	image2.copyTo(image4, cv::Mat());
	cv::imshow("result", image1);
	addWeighted(image1, 0.5, image3, 0.5, 0.0, image1);
	cv::imshow("图像融合", image1);
	cv::waitKey();
}

void splitMerge()//通道分离、合并
{
	cv::Mat image1 = cv::imread("D:\\OpenCVprivate\\7.jpg");
	cv::Mat image2 = cv::imread("D:\\OpenCVprivate\\11.jpg");
	cv::Mat image3 = cv::imread("D:\\OpenCVprivate\\12.jpg");
	cv::resize(image2, image2, cv::Size(869, 1200), 0.0, 0.0, CV_INTER_NN);
	cv::resize(image1, image1, cv::Size(869, 1200), 0.0, 0.0, CV_INTER_NN);
	cv::resize(image3, image3, cv::Size(869, 1200), 0.0, 0.0, CV_INTER_NN);
	cv::Mat image4;
	cv::Mat spilt1[3];
	cv::Mat spilt2[3];
	cv::Mat spilt3[3];
	split(image1, spilt1);
	split(image2, spilt2);
	split(image3, spilt3);
	spilt1[2] = spilt1[2];
	spilt1[2] = spilt3[2];
	merge(spilt1, 3, image4);
	cv::imshow("分离、合并", image4);
	cv::waitKey();
}

void brightnessContrast(int value, int value2)		//亮度对比度调节
{
	cv::Mat image = cv::imread("D:\\OpenCVprivate\\3.jpg");
	image.rowRange(0, 10).setTo(cv::Scalar(0));
	image.colRange(image.cols - 10, image.cols).setTo(cv::Scalar(0));
	image.colRange(0, 10).setTo(cv::Scalar(0));
	image.rowRange(image.rows - 10, image.rows).setTo(cv::Scalar(0));
	for (int y = 10; y < image.rows - 10; y++)
	for (int x = 10; x < image.cols - 10; x++)
	for (int c = 0; c < image.channels(); c++)
	{
		image.at<cv::Vec3b>(y, x)[c] = MIN((value*0.01)*(image.at<cv::Vec3b>(y, x)[c] + value2), 255);
		image.at<cv::Vec3b>(y, x)[c] = MAX(image.at<cv::Vec3b>(y, x)[c], 0);
	}
	cv::imshow("亮度对比度", image);
	cv::waitKey();
}

int main()
{
	imageAdd();
	splitMerge();
	brightnessContrast(120,0);//修改图像对比度(120%),亮度(+0)
	
	g_nAl = 70;
	double g_nMax = 100;
	cv::namedWindow(WINDOW_NAME,1);
	cv::createTrackbar("name:",WINDOW_NAME,&g_nAl,g_nMax,on_Trackbar); 	
	cv::waitKey();
	return 0;
}
正常运行是没问题,知识没有整理,看起来会有些不舒服。好在代码不多,有时间在整理吧
OpenCV3编程入门 学习笔记(总) OpenCV3编程入门 学习笔记 2018.12.12—2018.12.29 此博客为在看过毛星云版《OpenCV3编程入门》后所总结的一本笔记,可供复习使用。 文章目录OpenCV3编程入门 学习笔记第一部分 快速上手OpenCV1.5快速上手OpenCV图像处理1.6 OpenCV视频操作基础3.1 图像的载入、显示和输出到文件3.2滑动条的创建和使用3.3 鼠标操作第二部分 初探core组件... 阅读详情

相关推荐

《OpenCV3编程入门》目录

第一部分 快速上手OpenCV 1 第1章 邂逅OpenCV 3 1.1 OpenCV周边概念认知 4 1.1.1 图像处理、计算机视觉与OpenCV4 1.1.2 OpenCV概述 4 1.1.3 起源及发展 5 1.1.4 应用概述 6 1.2 OpenCV基本架构分析 7 1.3 OpenCV3带来了什么 11 1.3.1 项目架构的改变 11 1.3.2 将OpenCV2代码升级到OpenCV3报错时的一些策略 12 1.4 OpenCV的下载、安装与配置 14 1.4.1 预准备:下载和安装集成开

weixin_44103773的博客 508

初探core组件:opencv - core组件进阶

所谓XML,即eXtensible Markup Language,翻译成中文为“可扩展标识语言”。首先,XML是一种元标记语言。所谓“元标记”,就是开发者可以根据自身需要定义自己的标记,比如可以定义标记、。任何满足XML命名规则的名称都可以标记,这就向不同的应用程序打开了的大门。此外,XML是一种语义/结构化语言,它描述了文档的结构和语义。YAML是“YAML Ain’t a Markup Language”(译为“YAML不是一种置标语言”)的递回缩写。

m0_50127633的博客 1631

基于激光雷达的目标跟随功能移植到自己的ROS机器人小车上

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、下载目标跟随的源码二、修改话题名称1.修改/cmd_vel话题名称2.修改/scan话题名称3.修改双电机正反转4.目标跟随功能测试 前言 本人尝试把github上的一个目标跟随项目移植到自己的机器人小车上,并且成功了,最终小车可以跟着人移动,在这里分享一下心得。基于激光雷达的目标跟随,通过获取激光雷达的信息,跟随最近的物体。 提示:以下是本篇文章正文内容,下面案例可供参考 一、下载目标跟随的源码 源码地址:https:

weixin_44574633的博客 4463

2022-5-8:OpenCV入门(四)core组件进阶

1.LUT函数:Look up table Mat lookUpTable(1,256,CV_8U); u从三个都说副高fdffffDdqqqdqddq FQFQ2Q2W GW 问对方成为亲卫队请问我去问驱蚊器委屈委屈强强 char* p = lookUpTable.data; for(int i = 0 ; i < 256 ; ++i) p[i] = table[i]; //然后调用函数(I是输入 J是输出): for (int i = 0; i < ti

weixin_44465329的博客 514

UART全功能测试指南:环路/DMA/RS485/硬件流控实战

UART(通用异步收发器)是嵌入式系统中最基础的串行通信接口,其核心原理基于起始位、数据位、校验位与停止位的异步帧结构,依赖精确的波特率时钟同步与采样重建机制。在工业与物联网场景中,UART不仅需保障基本通信可靠性,更需支持DMA卸载、RS485半双工自动方向控制、RTS/CTS硬件流控等进阶能力,以提升实时性、抗干扰性与系统资源效率。典型应用涵盖调试日志输出、传感器数据采集、Modbus RTU总线通信及固件空中升级。本指南聚焦UART外设测试实践,覆盖环路自检、DMA吞吐验证、RS485时序对齐、硬件流

weixin_42599908的博客 134

AOSP14 Launcher3——手势上滑关键类AbsSwipeHandler解析

通过精密的事件监听、状态管理和对系统动画 API 及 Launcher 内部组件的协调,实现了复杂而流畅的手势导航体验。它的抽象设计允许子类(如。是 Quickstep (Launcher3 的手势导航实现) 中处理。的核心逻辑抽象基类。这个非常核心且复杂的类。)定制特定的回家动画逻辑。好的,我们来深入分析。

Micheal_Yang's Blog 1521

14.java openCV4.x 入门-Core之图像融合

专栏简介💒个人主页📰专栏目录📖心灵鸡汤📖建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫🧭文章导航🧭。

博客 1116

WinForm实战:如何用C#和PdfiumViewer打造一个功能齐全的PDF阅读器(含源码)

本文详细介绍了如何使用C#和PdfiumViewer库从零开始构建一个功能齐全的WinForm PDF阅读器。内容涵盖项目环境搭建、核心组件解析、基于命令模式的工具栏与UI架构设计,并深入讲解了智能缩放、页面导航、打印功能等核心交互的实现,以及内存管理和性能优化等高级话题,为开发者提供了一套完整的实战解决方案。

docker8compose的博客 505

python之opencv核心模块core常用函数

opencv核心模块core常用函数

让每一个想学习编程的人,都能学会,都能看懂,看了都有收获! 665

060、模型蒸馏:把扩散模型压进单步的魔法

《端侧文生图模型蒸馏实战:从32步到1步的优化之道》摘要:针对边缘设备部署难题,本文分享了扩散模型蒸馏的核心经验。通过重构损失函数(感知损失+对抗训练+KL散度)、优化采样轨迹截取策略和改造学生模型架构,成功将Stable Diffusion压缩至单步推理。关键发现包括:小批量训练更有效、标签平滑保障生成多样性、双模型策略平衡质量与速度。在Cortex-A53芯片上实现300ms内生成,内存占用控制在200MB以下。特别强调工业部署需权衡压缩率与稳定性,建议保留迭代模式开关以适配不同场景需求。

2601_95651806的博客 150

零基础入门红外与可见光图像融合:DAF-Net 实战全指南

本文介绍了基于DAF-Net的红外与可见光图像融合技术,主要内容包括:技术原理、环境配置、数据准备和模型实现。DAF-Net通过双分支特征提取和动态注意力融合机制,有效结合红外图像的热辐射信息与可见光图像的纹理细节。文章详细讲解了开发环境搭建步骤(Python 3.8+PyTorch),TNO数据集的预处理方法,并提供了完整的DAF-Net实现代码,包含特征提取、注意力融合和图像重建三个关键模块。该技术可广泛应用于安防监控、自动驾驶等领域,帮助开发者快速入门多模态图像融合。

FJN110的博客 123

初探core组件:OpenCV数据结构与基本绘图

我们有多种方法从现实世界获取数字图像:数码相机、扫描仪、计算机断层扫描和磁共振成像等等。在每一种情况下,我们(人类)看到的都是图像。然而,当把它转化为我们的数字设备时,我们记录的是图像中每个点的数值。例如,在上面的图像中,你可以看到汽车的镜子只不过是一个包含所有像素点强度值的矩阵。我们如何获得和存储像素值可能根据我们的需要而有所不同,但最终计算机世界里面的所有图像都可能被简化为数字矩阵和描述矩阵本身的其他信息。

m0_50127633的博客 1246

74、刀具磨损监测与寿命预测分析

本文综述了刀具磨损监测与寿命预测的研究现状,分析了力信号、功率信号、振动信号和声发射信号在刀具状态监测中的应用及其优缺点。介绍了当前常用的刀具寿命模型及故障诊断流程,并总结了基于不同信号的监测方法。文章指出,尽管已有多种方法在理论上取得进展,但在实际应用中仍面临挑战。未来研究方向包括采用更先进的神经网络、深入探索多信号融合技术以及有效利用工业大数据,以提升刀具状态识别的准确性与可靠性。

lstm7chronicler的博客 277

opencv-core组件一之像素操作、Mat常用方法

1.使用opencv扫描图像,查找表及时间测量 2.常用的图像遍历像素操作 3.矩阵Mat类基本操作

yohnyang的博客 480

数据挖掘实战-基于长短期记忆网络(LSTM)的黄金价格预测模型 | 97% 准确度

本实验基于Kaggle上提供的从2013年到2023年的黄金价格数据集,运用长短期记忆网络(LSTM)构建了黄金价格预测模型。该数据集详细记录了每日的黄金价格信息,包括开盘价、收盘价、高点、低点和交易量等,为模型的训练提供了丰富的数据支持。

m0_64336780的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

opencv3学习笔记(三)——core组件

1.前言前面已经知道opencv主要由16个组件组成,由于core组件提供了最基本的数据结构,所以就从core组件入手,开始opencv3的研究。2.core组件从opencv官网上可以看到,core组件主要由以下模块组成: Basic structures C structures and operations Connections with C++ perations on arrays X

qq_29012777的博客 519

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【opencv】第5章 core组件进阶

本节我们将一起认识XML 和 YAML这两种文件类型。所谓XML, 即 eXtensible Markup Language,翻译成中文为“可扩展标识语 言”。首先,XML 是一种元标记语言。所谓“元标记”,就是开发者可以根据自身 需要定义自己的标记,比如可以定义标记 、。任何满足XML 命名 规则的名称都可以标记,这就向不同的应用程序打开了的大门。此外,XML 是一 种语义/结构化语言,它描述了文档的结构和语义。

Antonio915的博客 1312

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

OpenCv各模块功能

文章目录OpenCv 主模块附加组件 OpenCv 主模块 OpenCv 主要的功能模块如下(参考的版本是 4.1.0): core: 核心功能模块: OpenCv 基本数据结构; 动态数据结构; 绘图函数; 数组操作相关函数; 辅助功能与系统函数和宏; 与 OpenGL 的互操作; improc: 图像处理模块:主要包含以下内容: 线性和非线性的图像滤波; 图像的几何变换; 其...

ZachZheng的专栏 1197

Java应用OpenCV指南其二:OpenCV组件浅析

在上一章我们成功安装并配置了OpenCV,现在我们可以查看一下解压目录F:\tools\opencv\build\include下的文件,有两个: opencv中包含了过去版本中保留下来的头文件,这里不做介绍。而opencv2中则包含了我们目前主要使用的组件,可以看到其中包含了一个叫做opencv_modules.hpp的hpp文件,打开可以看到里面包含了OpenCV2中所有组件的宏:

saiofo的博客 1296

OpenCV学习(16)

core组件进阶:访问图像中的像素 方法一:指针访问:c操作符[ ]; 方法二:迭代器iterator 方法三:动态地址计算 一,用指针访问像素 函数代码如下: //-------------------------colorReduce()函数------------------------- //c操作符【】 //------------------------------------------------------------------- void colorReduce(Mat&

m0_53123717的博客 1194

基于C++的opencv(七)core组件

关于Mat类,首先需要知道的是: (1)不必再手动为其开辟空间; (2)不必再在不需要时立即将空间释放。 Mat是一个类,有两个数据部分组成:矩阵头(包含矩阵尺寸、存储方法、存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同,矩阵可以是不同的维数)的指针。 opencv使用引用计数机制,其思路是让每个Mat 对象有自己的信息头,但共享同一个矩阵。这通过让矩阵指针指向同一个地址而实现。而拷贝构造函数则只复制信息头和矩阵指针,而不是复制矩阵。 opencv函数中输出图像的内存分配是自动完成的

yang_jianfeng的博客 588

OpenCV_(5):core组件常用函数

OpenCV中包含core组件,这个大组件包含一些图像的基本操作,简述下几个模块: 1:操作图像像素:有三种方式 a. 指针访问:C操作符[],一般就是*data[],速度最快 b. 迭代器iterator, Mat_<Vec3b>::iterator it = outputImage.begin<Vec3b>();//初始位置迭代器 Mat_<vec3

chuhang_zhqr的博客 1364

OpenCV-学习

OpenCV – 图像处理函数库下载安装:(作者:毛星云(浅墨))http://blog.youkuaiyun.com/poem_qianmo/article/details/19809337组件:(作者:毛星云(浅墨)) http://blog.youkuaiyun.com/poem_qianmo/article/details/19925819【core】——核心功能模块,包含如下内容: OpenCV基本数

muyunlingxuan的专栏 269

毛星云Opencv之core组件进阶5.1访问图像中的像素,颜色空间缩减,LOOK up table--图像元素查找,扫描,操作函数

关于自动截余:

weixin_52634719的博客 138

OpenCv3编程学习五

初探core组件 1.对于Mat结构的理解 显式创建Mat对象的七种方法 1.用Mat构造函数() 2.使用c/c++通过构造函数初始化 3.用已存在的lplImage指针创建信息头 4.用create()函数创建 5.使用MATLAB形式的初始化方式 6.对小矩阵使用逗号分隔式初始化函数 7.为已存在的对象创建新的信息头 这些的代码都是比较简单的。但是需要注意的是:1.endl后面那个是l不是1(c++没写过。。)2.对于stdafx.h是预编译的头文件,所以不需要再写,以免报错。 一些代码如下: //*

wzw的博客 243

OpenCV3编程入门 学习笔记

OpenCV3编程入门 学习笔记 2018.12.12—2018.12.29 此博客为在看过毛星云版《OpenCV3编程入门》后所总结的一本笔记,可供复习使用。 文章目录 OpenCV3编程入门 学习笔记第一部分 快速上手OpenCV1.5快速上手OpenCV图像处理1.6...

qq153198768的博客 554
上一篇: OpenCV边缘提取
下一篇: C++多线程框架
chasingMax
博客等级 码龄9年 8粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值