【OpenCV 基础知识 2】灰度化图片

文章目录

    • cvCreateImage
    • cvCvtColor
    • 完整示例代码

cvCreateImage

使用OpenCV库在Delphi中创建一个灰度图像。让我解释一下:

gray_image := cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
  1. cvGetSize(image): 这个函数返回给定图像(在这里是image)的大小。它返回一个CvSize类型的结构体,包含图像的宽度和高度。
  2. IPL_DEPTH_8U: 这是图像的深度(bit-depth)参数。在这里,IPL_DEPTH_8U 表示8位无符号整数,即每个像素的灰度级别范围在0到255之间。
  3. 1: 这是通道数。在这里,1 表示创建一个单通道的灰度图像。
  4. cvCreateImage: 这是OpenCV库中的函数,用于创建图像。它接受三个参数:大小、深度和通道数。然后,它返回一个指向新图像的指针。

所以,整个行的作用是创建一个与原始图像(image)大小相同的灰度图像,并将其赋值给 gray_image。这样,gray_image 就成为了一个单通道的灰度图像,可以在后续的图像处理中使用。

cvCvtColor

使用OpenCV库中的 cvCvtColor 函数将彩色图像转换为灰度图像。让我解释一下:

cvCvtColor(image, gray_image, CV_RGB2GRAY);
  1. image: 这是原始的彩色图像,即要进行颜色转换的图像。
  2. gray_image: 这是目标图像,即将结果存储到的图像。在这里,它是先前创建的灰度图像。
  3. CV_RGB2GRAY: 这是颜色转换的标志。在这里,CV_RGB2GRAY 表示从RGB(彩色)到灰度的颜色转换。这将把彩色图像中的每个像素转换为相应的灰度值。

所以,整个行的作用是将原始彩色图像 image 转换为灰度图像,并将结果存储在 gray_image 中。这是常见的图像处理操作,将彩色图像转换为灰度图像通常用于简化图像处理流程,降低计算复杂性。

完整示例代码

program cv_CvtColor;{$APPTYPE CONSOLE}
{$R *.res}usesSystem.SysUtils,ocv.highgui_c,ocv.core_c,ocv.core.types_c,ocv.imgproc_c,ocv.imgproc.types_c,uResourcePaths;constfilename = cResourceMedia + 'opencv_logo_with_text.png';filename_gray = cResourceMedia + 'opencv_logo_with_text_gray.png';varimage: pIplImage = nil;gray_image: pIplImage = nil;begintryimage := cvLoadImage(filename, 1);//创建一个纯灰度图片gray_image := cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);//把image图像灰度化存到gray_imagecvCvtColor(image, gray_image, CV_RGB2GRAY);//保存gray_imagecvSaveImage(filename_gray, gray_image);cvNamedWindow(filename, CV_WINDOW_AUTOSIZE);cvNamedWindow('Gray image', CV_WINDOW_AUTOSIZE);cvShowImage(filename, image);cvShowImage('Gray image', gray_image);cvWaitKey(0);cvReleaseImage(image);cvReleaseImage(gray_image);cvDestroyAllWindows;excepton E: Exception doWriteln(E.ClassName, ': ', E.Message);end;end.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/12528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】事务及其隔离性/隔离级别

目录 一、事务的概念 1、事务的四种特性 2、事务的作用 3、存储引擎对事务的支持 4、事务的提交方式 二、事务的启动、回滚与提交 1、准备工作:调整MySQL的默认隔离级别为最低/创建测试表 2、事务的启动、回滚与提交 3、启动事务后未commit,但是…

MVP产品设计与数据指标

MVP(minimum viable product,最小化可行产品)概念最早由埃里克莱斯提出,刊载于哈弗商业评论,并有出版物《精益创业》 和常规产品不同,MVP更侧重于对未知市场的勘测,用最小的代价接触客户的方法…

学习Nginx(一):基础

介绍 Nginx是一个高性能的HTTP和反向代理的web服务器,它的设计重点是高并发、高性能和低内存消耗。它常被用于提供静态内容、负载均衡和作为Web服务器。 Nginx具有以下功能和特点: 静态文件服务:作为一个Web服务器,Nginx可以处…

GPT-4o可以用了

方法:挂日本/新加坡的梯子就可以了,打开就会弹出以下的弹窗。不过不知道可以用多久呢? 2024/5/15

木里风景文化|基于SSM+vue的木里风景文化管理平台的设计与实现(源码+数据库+文档)

木里风景文化管理平台 目录 基于SSM+vue的木里风景文化管理平台的设计与实现 一、前言 二、系统设计 三、系统功能设计 1 系统功能模块 2 管理员功能模块 3 用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源…

精通Linux中的编辑器(非常详细!!!)

今天我们来说一下编辑器…… Linux中的编辑器 vi:是一个文本编辑器,用于撰写文档,或者开发程序。 vim:是vi的增强版功能一致,可视化效果更好一些。去鼠标化编辑更加方便可定制化 注意:vim编辑器是一个模式…

信息系统项目管理师——十大管理过程输入、工具和技术、输出(论文篇)一

一、项目整合管理 制定项目章程 在项目管理中,制定项目章程是一个关键的初始过程,它正式授权项目的开始并为项目设定高层次的方向。项目章程的编制涉及特定的输入、采用的工具和技术,以及产生的输出。以下是这些方面的详细说明:…

如何避免父组件重新渲染,子组件也跟着渲染

当父组件重新渲染时,通常情况下,子组件也会跟着重新渲染。但是,有一些方法可以避免这种情况发生,让子组件在父组件重新渲染时不进行渲染。以下是五种常见的方法: 使用 React.memo 或 PureComponent: 使用 …

前端 JS 经典:为什么需要模块化

首先,自我评定一下,一个 js 文件,各位兄弟,最多能掌控多少行,什么意思呢,就是说,一个 js 文件在多少行之内,你是可以清楚的知道这个 JS 实现了哪些业务逻辑,并对这些业务…

专项资金!2024年自贡市高新技术企业奖励政策及申报各类补贴政策汇总

第一章 总 则 第一条 为积极应对经济发展新常态,加快培育工业发展新动力,持续推动产业结构优化升级,实现工业经济平稳较快增长,结合我县实际,制定本扶持激励办法。 第二条 人民政府将继续建立工业企业发展引导专项…

全知人工智能的黎明:OpenAI 革命性的 GPT-4o 揭晓

全知人工智能的黎明:OpenAI 革命性的 GPT-4o 揭晓 在一项突破性的公告中,OpenAI 推出了其最新的旗舰人工智能模型 GPT-4o,该模型有望彻底改变我们与人工智能交互的方式。这种无所不知的人工智能模型拥有前所未有的能力,从实时翻译…

Redis-持久化操作-AOF

持久化操作-AOF AOF是什么? 以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只允许加文 件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之…

python:使用pip安装wxPython

1、找到python安装路径的Scripts文件夹,复制文件夹地址 2、进入cmd,粘贴地址,在后面加上\pip install wxPython 完整示例: C:\PythonXX\Scripts\pip install wxPython 回车运行,等待下载安装完成。 如果报错&…

电力系统潮流计算的计算机算法(四)——PQ快速解耦潮流算法

本篇为本科课程《电力系统稳态分析》的笔记。 本篇为这一章的第四篇笔记。上一篇传送门。 潮流计算的快速解耦法 牛顿-拉夫逊法潮流计算,主要的工作量在于形成雅可比矩阵和求解修正方程。由于雅可比矩阵的阶数为nm-1,约为节点总数的两倍,非…

Axure10_win安装教程(安装、汉化、授权码,去弹窗)

1.下载Axure10 链接:https://pan.baidu.com/s/1fc8Bgyic8Ct__1IOv-afUg 提取码:9qew 2.安装Axure10 因为我的电脑是Windows操作系统,所以我下载的AxureRP-Setup-Beta v10.0.0.3816 (Win).exe 一直点下一步就行 3.Axure10中文 打开Axure…

LangChain-Chatchat 实践

目录 1. 说明 相关路径: 安装环境: 2. 安装 2.1 工具准备 2.2 资料准备 2.3 执行 3. 测试 3.1 LLM对话 3.2 知识库 3.3 API 接口 参考 1. 说明 比较了几个AI LLM的集成应用工具(比如Quivr, Dify, one-api), 还是LangChain-Chatchat更符合我的需要: 支持私有化部署…

5.15项目进度总结

今天完成了随机选人和实时显示的功能(还需要维护),使得程序可以对用户的操作进行实时的显示。 实时显示的思路:在登录后开一个线程用一个socket去链接服务端并查询需要实时的信息,同时服务端把这个socket记录下来&…

【scikit-learn006】随机森林(Random Forest)ML模型实战及经验总结(更新中)

1.一直以来想写下基于scikit-learn训练AI算法的系列文章,作为较火的机器学习框架,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架随机森林(Random Forest…

RS485和RS232区别

RS485和RS232接口在物理外观上的区别主要在于连接器的类型和接线方式上。这两种串行通讯接口虽然在功能上有所不同,但外观上也有一些显著的特点。 连接器类型: RS232 接口通常使用DB9或DB25类型的连接器。DB9是较为常见的,拥有9个针脚&#x…

Adaboost集成学习 | Matlab实现基于CNN-BiLSTM-Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | Matlab实现基于CNN-BiLSTM-Adaboost集成学习时间序列预测(股票价格预测) 模型设计 融合Adaboost的CNN-BiLSTM模型的时间序列预测,下面是一个基本的框架。 数据准备: 收集并整理用于时…