BS版图形系统 - OpenCV - 第2章笔记

ESP32-S3 SPI接口实战:从引脚分配到高速通信配置 本文详细解析了ESP32-S3的SPI接口配置与高速通信优化技巧,从引脚分配到软件配置,再到DMA传输和时钟优化,帮助开发者快速掌握SPI通信技术。特别针对ESP32-S3的SPI2接口进行了实战演示,包括硬件连接和常见问题排查,适用于各类嵌入式开发项目。 阅读详情


QQ 282397369

2 OpenCV基础知识导论

2.1 技术要求

2.2 基本CMake配置文件

2.3 创建一个库

2.4 管理依赖项

2.5 让脚本更复杂

2.6 图像和矩阵

  • 图像、像素
  • 值范围0-255,或其他范围:高动态范围成像、热图像领域[0 ~ 1]
  • 矩阵,宽度 x 高度 x 颜色通道数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.7 读/写图像

  • imread: CV_LOAD_IMAGE_GRAYSCALE、IMREAD_UNCHANGED、IMREAD_COLOR、IMREAD_GRAYSCALE
  • imwrite
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

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

int main( int argc, const char** argv )
{
	// Read images
	Mat color= imread("../lena.jpg");
	Mat gray= imread("../lena.jpg", IMREAD_GRAYSCALE);
	
	if(! color.data ) // Check for invalid input
	{
		cout << "Could not open or find the image" << std::endl ;
	 	return -1;
	}

	// Write images
	imwrite("lenaGray.jpg", gray);
	
	// Get same pixel with opencv function
	int myRow=color.rows-1;
	int myCol=color.cols-1;
	auto pixel= color.at<Vec3b>(myRow, myCol);
	cout << "Pixel value (B,G,R): (" << (int)pixel[0] << "," << (int)pixel[1] << "," << (int)pixel[2] << ")" << endl;
	
	// show images
	imshow("Lena BGR", color);
	imshow("Lena Gray", gray);
	// wait for any key press
	waitKey(0);
	return 0;
}

在这里插入图片描述

  • at

2.8 读取视频和摄像头

  • CommandLineParser
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

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

// OpenCV command line parser functions
// Keys accecpted by command line parser
const char* keys =
{
	"{help h usage ? | | print this message}"
    "{@video | | Video file, if not defined try to use webcamera}"
};

int main( int argc, const char** argv )
{
	CommandLineParser parser(argc, argv, keys);
    parser.about("Chapter 2. v1.0.0");
    //If requires help show
    if (parser.has("help"))
	{
	    parser.printMessage();
	    return 0;
	}

	String videoFile= parser.get<String>(0);
	
	// Check if params are correctly parsed in his variables
	if (!parser.check())
	{
	    parser.printErrors();
	    return 0;
	}

	VideoCapture cap; // open the default camera
	if(videoFile != "")
		cap.open(videoFile);
	else
		cap.open(0);
    if(!cap.isOpened())  // check if we succeeded
        return -1;

    namedWindow("Video",1);
    for(;;)
    {
        Mat frame;
        cap >> frame; // get a new frame from camera
        if(frame.empty())
        	return 0;
        imshow("Video", frame);
        if(waitKey(30) >= 0) break;
    }
    // Release the camera or video cap
    cap.release();
	
	return 0;
}

2.9 其他基本对象类型

  • Vec、Scalar、Point、Size、Rect、RotatedRect

Vec

  • Vec2b、Vec3b、Vec4b
  • Vec2s、Vec3s、Vec4s
  • Vec2i、Vec3i、Vec4i
  • Vec2f、Vec3f、Vec4f、Vec6f
  • Vec2d、Vec3d、Vec4d、Vec6d
  • 运算:+ - 数乘 == != norm

Scalar

Point

  • Point2i, Point, Point2f, Point2d
  • 运算:+ - 数乘 除数 += -= *=数 /=数 == !=

Size

  • width, height, area()

Rect

  • 左上角、宽高
  • ROI: Region of Interest

RotatedRect

  • 中心点、宽高、旋转角度
  • boundingBox()
    在这里插入图片描述

2.10 基本矩阵运算

  • 创建Mat,构造函数
  • CV_number_typeC( n)
  • Mat::zeros[全0], Mat::ones[全1], eye[单位矩阵]
  • 运算: + - 数乘 mul
  • 转置t()
  • 求逆inv()
  • 计算非零元素: countNonZero
  • 通道的平均值和标准差: meanStdDev
  • 查找最大最小值:minMaxLoc

2.11 基本数据存储

  • XML/YAML持久层
  • 写入FileStorage
#include "opencv2/opencv.hpp"
using namespace cv;

int main(int, char** argv)
{
	// create our writter
    FileStorage fs("test.yml", FileStorage::WRITE);
    // Save an int
    int fps= 5;
    fs << "fps" << fps;
    // Create some mat sample
    Mat m1= Mat::eye(2,3, CV_32F);
	Mat m2= Mat::ones(3,2, CV_32F);
	Mat result= (m1+1).mul(m1+3);
	// write the result
    fs << "Result" << result;
    // release the file
    fs.release();

    FileStorage fs2("test.yml", FileStorage::READ);

    Mat r;
    fs2["Result"] >> r;
    std::cout << r << std::endl;

    fs2.release();

    return 0;
}

2.12 总结

Matlab图像处理频域滤波实现——高斯低通、高通、带通带阻滤波器 如果你想要进一步了解更多的相关知识, 阅读详情

相关推荐

海光(hygon)CPU ESXI vSphere 紫屏问题修复记录

海光服务器ESXI 紫屏问题修复

edison202302的博客 3551

重磅升级,52个Python+OpenCV实战项目教你掌握图像处理

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达近期小白学视觉公众号推出了多篇Python+OpenCV实战项目的文章,深受小伙伴们的喜爱。最近有小...

小白学视觉 1659

大疆OcuSync系统背后的黑科技:跳频扩频技术如何让你的无人机飞得更稳

本文深入解析了大疆OcuSync系统如何运用跳频扩频技术等先进无线通信方案,显著提升无人机在复杂环境下的飞行稳定性。系统通过跳频扩频与直接序列扩频技术协同工作,结合双频智能切换与多天线MIMO,有效对抗信号干扰与多径效应,确保控制指令与高清图传的可靠、低延迟传输,为用户带来更安心、更流畅的飞行体验。

ol7890123的博客 627

BS版图形系统 - OpenCV - 第1章笔记

BS版图形系统 - OpenCV - 第1章笔记1 OpenCV入门1.1 了解人类视觉系统1.2 人类如何理解图像内容1.3 能用OpenCV做什么1.3.1 内置数据结构和输入/输出1.3.2 图像处理操作1.3.3 GUI1.3.4 视频分析1.3.5 3D重建1.3.6 特征提取1.3.7 对象检测1.3.8 机器学习1.3.9 计算摄影1.3.10 形状分析1.3.11 光流算法1.3.12 人脸和对象识别1.3.13 表面匹配1.3.14 文本检测和识别1.3.15 深度学习1.4 安装Open

drgraph的博客 390

Unity ProBuilder(自己创建斜面、拐角)

ProBuilder基础实例

weixin_56537692的博客 1551

Ultrascale/Ultrascale+ FPGA GTH IP及结构详解(一)

FPGA GTH Transceiver

houzi6320的博客 1万+

BS版图形系统 - OpenCV - 第6章笔记

BS版图形系统 - OpenCV - 第6章笔记6. 学习对象分类6.1 技术要求6.2 机器学习概念介绍OpenCV机器学习算法 QQ: 282397369 6. 学习对象分类 对每个分离的对象进行分类 训练系统,以便能够学习必需的参数,从而决定将哪个特定标签分配给检测到的对象 机器学习的基本概念,以便对具有不同标签的图像进行分类 6.1 技术要求 6.2 机器学习概念介绍 机器学习:计算机无须明确编程就能够开展学习的能力 机器学习涉及到人工智能中的模式识别和学习理论,并且与计算统计学有关 应用:OCR、

drgraph的博客 404

DDR5中的On-Die Termination(ODT)详解:电阻值支持及其背后的秘密

DDR5支持多档ODT电阻值,范围从40Ω到480Ω,均基于240Ω标准参考电阻RZQR_{ZQ}RZQ​。不同电阻档位对应不同的信号负载和功耗需求。校准电压点关键,常用0.8×VDD进行精准调校。CA信号间ODT匹配必须严格控制,保证命令总线稳定。选择合适的ODT值是高速内存设计中不可忽视的细节。

weixin_43199439的博客 2096

BS版图形系统 - OpenCV - 第5章笔记

BS版图形系统 - OpenCV - 第5章笔记5 自动光学检查、对象分割和检测5.1 技术要求5.2 隔离场景中的对象5.3 为AOI创建应用程序5.4 预处理输入图像5.4.1 噪声消除5.4.2 用光模式移除背景进行分割5.4.3 阈值5.5 分割输入图像5.5.1 连通组件算法5.5.2 findContours算法5.6 总结 ** QQ: 282397369 ** 5 自动光学检查、对象分割和检测 AOI:自动光学检查 5.1 技术要求 5.2 隔离场景中的对象 预处理: 噪声消除 光消

drgraph的博客 261

智能车图像处理19-进阶篇11--斜入十字补线

这篇文章主要讲述智能车竞赛中如何对于斜入十字进行补线操作。

taiyuezyh的博客 7479

NetSuite软件二次开发:NetSuite二次开发最佳实践与案例分析

SuiteScript是NetSuite提供的一种用于二次开发的脚本语言,它基于JavaScript,但添加了特定的API和框架,以支持NetSuite平台的业务逻辑开发。SuiteScript有两种版本:SuiteScript 1.0和SuiteScript 2.0,后者提供了更现代的面向对象编程模型,增强了代码的可读性和可维护性。NetSuite允许用户自定义字段以满足特定的业务需求。这些字段可以添加到现有的记录类型中,也可以用于自定义记录。自定义字段可以是文本、数字、日期、下拉列表等多种类型。

kkchenjj的博客 1465

BS版图形系统 - OpenCV - 第4章笔记

BS版图形系统 - OpenCV - 第4章笔记4 深入研究直方图和滤波器4.1 技术要求4.2 生成CMake脚本文件4.3 创建图形用户界面4.4 绘制直方图4.5 图像颜色均衡4.6 Lomography效果4.7 卡通效果4.8 总结 QQ: 282397369 4 深入研究直方图和滤波器 4.1 技术要求 4.2 生成CMake脚本文件 4.3 创建图形用户界面 Show histogram Equalize histogram Lomography effect Cartoonize effe

drgraph的博客 220

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

BS版图形系统 - OpenCV - 第3章笔记

BS版图形系统 - OpenCV - 第3章笔记3 学习图形用户界面3.1 技术要求3.2 OpenCV用户界面介绍3.3 OpenCV的基本图形用户界面3.4 QT图形用户界面3.5 OpenGL支持3.6 总结 QQ 282397369 3 学习图形用户界面 显示图像结果,处理用户与图像的交互。 3.1 技术要求 3.2 OpenCV用户界面介绍 基于原生用户界面的基本界面: GTK 基于QT库的略微更高级的界面 3.3 OpenCV的基本图形用户界面 highgui模块 #include &

drgraph的博客 170

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

计算机控制技术及应用

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

DrGraph原理示教 - OpenCV 4 功能 - 阈值

参数4:阈值的方式,主要有5种,分别为cv.THRESH_BINARY、cv.THRESH_BINARY_INV、cv.THRESH_TRUNC、cv.THRESH_TOZERO、cv.THRESH_TOZERO_INV。有时间看下源码就可以不用猜测了。二进制阈值化:选择一个特定的阈值量,大于该阈值的像素点的灰度值设定为最大值(如8位灰度值最大为255),小于该阈值的像素点的灰度值设定为0。反阈值化为0:与阈值化为0类似,只是像素点的灰度值大于该阈值的不进行任何改变,而小于该阈值的,其灰度值全部变为0。

drgraph的博客 1447

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

DrGraph原理示教 - OpenCV 4 功能 - 颜色空间

前段时间,甲方提出明确需求,让把软件国产化。稍微研究了一下,那就转QT开发,顺便把以前的功能代码重写一遍。至于在Ubuntu下折腾QT、OpenCV安装事宜,网上文章很多,照猫画虎即可。QT 6支持C++ 17,里面很多C++的新功能,用起来更为舒爽。QT Creator中,代码提示更快捷,代码折叠也很准确QT Creator中,文档生成更方便,配合Doxygen之后,自己都感觉更专业了当然,更让我高兴的是,QT直接支持最新版的OpenCV,以前还一直停留在2.3版。

drgraph的博客 1442

DrGraph原理示教 - OpenCV 4 功能 - 直方图

OpenCV直方图是一种可以对整幅图的灰度分布进行整体了解的图示。它是带有像素值(从0到255,不总是)的图在X轴上,在y轴上的图像对应的像素个数。通过观察图像的直方图,我们可以直观的了解图像的对比度、亮度、亮度分布等。在直方图中,横坐标表示图像中各个像素点的灰度级,纵坐标表示具有该灰度级的像素个数。直方图的左边部分显示了图像中较暗像素的数量,右边区域显示了更明亮的像素。直方图是非常常用的图像处理方法,有时在很多图像预处理中能起到特别好的效果。

drgraph的博客 1361

BS版图形系统 - 界面控件配置

BS版图形系统 - 界面控件配置界面控件考虑资源配置化XML资源配置加载下一步任务 QQ: 282397369 界面控件考虑 有了属性浏览器,下来就该处理工具栏了。 一个直观感觉,网页留给程序的空间,要比应用程序少。网页在浏览器这个程序中运行,不同的浏览器,提供相应的界面,占据标题、工具栏位置,甚至书签与侧栏。所以做网页程序的时候,尽量能将工作区整大一些。 当然,如何整应该是UI设计的事,技术层面还是关心如何实现的问题。 在属性浏览器的基础上,初步实现了一个VCL的JS框架。但新建控件,还是要写一堆代码来控

drgraph的博客 1270

BS版图形系统 - 画线

BS版图形系统 - 画线 一晃两个月过去了,儿子也考了个喜欢的大学,重新,又稳定了下来。 我也重操旧业,编点小程序。时不时发个小博客,自娱自乐一下。 今天处理图元 - 线。 话不多说,直接上代码。 export class TLine extends TTwoPointMeta { beginArrow: TArrow = new TArrow; endArrow: TArrow = new TArrow; Initial() { this.setClassType(

drgraph的博客 774

DrGraph原理示教 - OpenCV 4 功能 - 二值化

二值化,也就是处理结果为0或1,当然是针对图像的各像素而言的1或0,对应于有无,也就是留下有用的,删除无用的,有用的部分,就是关心的部分在图像处理中,也不仅仅只是1或0,因为这两个值看起来都是黑的,人眼很难分辨清楚,那就放大一些,255或0,黑白就出来了目标识别、图像分割、目标提取等后续应用,很多会基于二值化的结果。所以图像分析的二值化处理是一个重要环节。

drgraph的博客 734

DrGraph - SVG模块之一:显示与节点选择

DrGraph - SVG模块之一:显示与节点选择显示SVG编辑生成目标子集SVG 对于虚拟面板中的元件,以前采用FLASH技术实现相应显示与交互,通过ActionScript进行通信。现在看来,FLASH好象势微,使用起来有点麻烦,需要一些设置。其次,做FLASH的人也少了,后续也不太方便。 那就用SVG来进行改造。 显示SVG 将SVG解析置于DLL中,应用程序直接调用DLL完成解析并生成PNG,然后再画出显示。 UnicodeString filename = FResponseNode->At

drgraph的博客 680

DrGraph原理示教 - OpenCV 4 功能 - 单通道图

在OpenCV中,Mat类的channels实际上和每个元素上存储的数据有关,例如存储的是Point3f,channel就自动为3。具体来说,图像是由一个个像素点堆积而成的,而一个像素点,又是由RGB颜色混合而成的。从数学的角度来看,结果都是 f(R, G, B, A),单通道是R/G/B/A中的一个,灰度是其余逻辑,如0.299×R+0.587G+0.114B。当然,对编程来说,光知道通道数是多少,并没有什么大用,应该要取得某个通道的图像才是目的,这也是各图像的内在本质。这里的通道就是channels。

drgraph的博客 650

脚本为王 - 辅助功能

脚本为王 - 辅助功能目标通用辅助功能QQ自动反馈图像输入操作模式 QQ: 282397369 目标 之前做了个苹果全自动试玩脚本,发觉脚本+图像分析确实很有用,尤其是针对最终应用,比如手机业务、产品质量检测,其灵活性与实用性大大增加。 本月,送儿子去深圳上大学,发现深圳众多中小公司工厂,对脚本+图像分析的需求旺盛。 所以,干脆做一个通用的脚本模块软件,可用于诸多需求场合。 把多年不用的群208894875清空,改群名为脚本为王,笨狗先扎个狼狗势。 通用辅助功能 QQ自动反馈 该功能主要是在软件运行过程中,

drgraph的博客 649

DrGraph原理示教 - OpenCV 4 功能 - 形态操作

OpenCV作为一个基础的或通用的图像处理,那肯定是需要支持不同的需求,象刚说的这些主体差异,功能也是存在了,只不过采用了相应的所谓专业术语来进行称呼,如梯度、礼帽与黑帽。这些结果可以为主体,但很多地方还想看看边界或轮廓,那就需要在这些主体之间进行差值,或是减法操作,这样,结果就是边缘,就象两个大小不同的同心圆,差值后就得到圆环。从OpenCV图像处理基本知识来看,膨胀腐蚀操作后,还有形态操作,如开运算、闭运算、梯度、礼帽与黑帽,感觉很多,其实,本质上就是批处理操作,如。如,梯度 = 膨胀 - 腐蚀。

drgraph的博客 636

DrGraph原理示教 - OpenCV 4 功能 - 边界填充

这里的核心就是理解borderType,具体就是。今天简单来看一下OpenCV中的边界填充。OpenCV 4 功能 - 边界填充。其实不用记,实验一下就了解。

drgraph的博客 631

DrGraph原理示教 - OpenCV 4 功能 - 颜色变幻

二值化是逐像素处理,而逐像素处理会有很多效果,这主要是给人眼看的,因为像素值的变化,直观的就是图像变化,比如颜色。

drgraph的博客 615

BS版图形系统 - Ribbon工具栏初步

BS版图形系统 - Ribbon工具栏初步组件实现RibbonRibbonTabToolBarButton调用对应的xml运行效果下一步工作 QQ: 282397369 开始攻Ribbon,毕竟软件有个象样的界面,还是要拿得出手一点点。 思路就借鉴DevExpress,简化实现,不整太多的不必要环节。 第二个思路就是先实现功能,以后再模块化。 组件实现 先准备初步要用到的组件。 Ribbon export class TRibbon extends TPageControl { btnApp: TB

drgraph的博客 602
上一篇: BS版图形系统 - OpenCV - 第1章笔记
下一篇: BS版图形系统 - OpenCV - 第3章笔记
DrGraph
博客等级 码龄14年 228粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值