十八、图像像素类型转换和归一化操作

项目功能实现:对一张图像进行类型转换和归一化操作
按照之前的博文结构来,这里就不在赘述了

一、头文件

norm.h

#pragma once#include<opencv2/opencv.hpp>using namespace cv;class NORM {
public:void norm(Mat& image);
};#pragma once

二、函数实现

norm.cpp

Ⅰ,像素类型转换

image.convertTo(image, CV_32FC3);
将image(第一个)转换为CV_32FC3类型,最终输出为image(第二个)

对于数据类型而言,其结构为:CV_<bit_depth>(S|U|F)C<number_of_channels>
例如:CV_32FC3 细分:CV_ 32 F C3
32表示每个像素点值所占32bit
F表示Float单精度浮点数
C3表示4通道图像,为啥呢?C表示通道数,C1是单通道、C2是三通道、C3是四通道,多了一个alpha透明度通道,PNG格式里面就有alpha通道
当然也可以省略,默认为C1

其实就三个参数而已,总结一下

参数一(CV_32FC3)参数二(CV_32FC3)参数三(CV_32FC3) 该参数可省略,默认为C1
8S:signed int,有符号整形C1:单通道
16U:unsigned int,无符号整形C2:三通道
32F:float,单精度浮点型C3:四通道,多了一个alpha通道
64
表示每个像素点值所占的bit位

Ⅱ,归一化

normalize(image, result, 1.0, 0, NORM_MINMAX);
参数一:处理对象为image
参数二:输出结果为result
参数三:alpha
参数四:beta
参数五:不同归一化操作,包括:NORM_L1、NORM_L2、NORM_INF、NORM_MINMAX

NORM_L1:
1,求解image图片中所有像素点绝对值之和sum
2,result[0,0] = (alpha * image[0,0]) / sum,得到result的第一个像素值,以此类推得到result图像

NORM_L2:
1,求解image图片中各像素点值的平方和的开方sum(也就是L2-范数)
2,result[0,0] = (alpha * image[0,0]) / sum,得到result的第一个像素值,以此类推得到result图像

NORM_INF:
1,求解image图片中所有像素点值最大的那个max
2,result[0,0] = (alpha * image[0,0]) / max,得到result的第一个像素值,以此类推得到result图像

NORM_MINMAX:
1,alpha和beta系统会自动判断出最大值和最小值,分别赋值为max和min
2,根据公式计算出result的每个像素点的值
在这里插入图片描述

#include"norm.h"
#include<iostream>
#include<opencv2/opencv.hpp>void NORM::norm(Mat& image) {Mat result;std::cout << image.type() << std::endl;image.convertTo(image, CV_32FC3);std::cout << image.type() << std::endl;normalize(image, result, 1.0, 0, NORM_MINMAX);std::cout << result.type() << std::endl;imshow("norm",result);
}

三、主函数

yy_main.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
#include "norm.h"using namespace cv;
using namespace std;int main(int argc, char** argv) {Mat src = cv::imread("E:/C++_workspace/beyond.jpg", IMREAD_COLOR);if (src.empty()) {printf("load image is false...\n");return -1;}namedWindow("yanyu", WINDOW_FREERATIO);imshow("yanyu", src);NORM yy;yy.norm(src);waitKey(0);destroyAllWindows();return 0;
}

项目结构如下:
在这里插入图片描述

运行结果如下:
在这里插入图片描述
因为是纯白色的背景,归一化效果不太明显

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

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

相关文章

【EI会议征稿通知】2024年软件自动化与程序分析国际学术会议(SAPA 2024)

2024年软件自动化与程序分析国际学术会议&#xff08;SAPA 2024) 2024 International Conference on Software Automation and Program Analysis 在当今科技社会中&#xff0c;软件产业呈快速发展趋势&#xff0c;软件自动化与程序分析技术在提高软件质量、降低开发成本、提升…

如何使用Express框架构建一个简单的Web应用

在这个数字化时代&#xff0c;Web应用的需求越来越多样化和复杂化。在前端开发领域&#xff0c;Express框架作为一个快速、灵活的Node.js Web应用程序框架&#xff0c;拥有强大的功能和丰富的生态系统&#xff0c;深受开发者们的青睐。本篇博客将带您一步步探索如何使用Express…

Spring之AOP源码解析(上)

Aop相关注解 EnableTransactionManagementEnableAspectJAutoProxyEnableAsync... 从注解切入来看看这些注解都干了什么 Import注解作用简述 注入的类一般继承ImportSelector或者ImportBeanDefinitionRegistrar接口 继承ImportSelector接口&#xff1a;selectImports方法返回…

通信入门系列——锁相环、平方环、Costas环

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、锁相环 1、压控振荡…

设计模式-创建型模式-原型模式

原型模式&#xff08;Prototype Pattern&#xff09;&#xff1a;使用原型实例指定创建对象的种类&#xff0c;并且通过克隆这些原型创建新的对象。原型模式是一种对象创建型模式。原型模式其实就是从一个对象再创建另外一个可定制的对象&#xff0c;而且不需知道任何创建的细节…

初识表及什么是数据表

一、了解表 1.1.概述 表是处理数据和建立关系型数据库及应用程序的基本单元&#xff0c;是构成数据库的基本元素之一&#xff0c;是数据库中数据组织并储存的单元&#xff0c;所有的数据都能以表格的形式组织&#xff0c;目的是可读性强。 1.2.表结构简述 一个表中包括行和列…

C# OpenCvSharp 利用白平衡技术进行图像修复

目录 效果 灰度世界(GrayworldWB)-白平衡算法 完美反射(SimpleWB)-白平衡算法 基于学习的(LearningBasedWB)-白平衡算法 代码 下载 C# OpenCvSharp 利用白平衡技术进行图像修复 OpenCV xphoto模块中提供了三种不同的白平衡算法&#xff0c;分别是&#xff1a;灰度世界(G…

qml 保存当前界面并在其图片中添加文字

使用场景&#xff1a;在保存二维码的时候&#xff0c; 在二维码图片加标题或描述 保存后的图片 demo&#xff1a;https://download.csdn.net/download/uVarAndMethod/88868455

【AIGC】Gemma和ChatGLM3-6B使用体验

近期&#xff0c;谷歌发布了全新的开源模型Gemma&#xff0c;同时智谱AI和清华大学KEG实验室合作推出了ChatGLM3-6B。这两个模型都是先进的对话预训练模型&#xff0c;本文将对它们进行对比&#xff0c;并分享使用体验。 先上效果 ChatGLM3-6B: ChatGLM3 Gemma(20亿参数)&…

安全中国云 | 亚信安全与云宏完成产品互认 共筑云安全未来

近日&#xff0c;亚信安全与云宏信息科技股份有限公司&#xff08;以下简称云宏&#xff09;进一步强化云上合作&#xff0c;完成多款产品兼容性互认。亚信安全云主机安全产品&#xff08;DeepSecurity&#xff09;与云宏CNware WinSphere服务器虚拟化软件、CNware WinStack虚拟…

【嵌入式学习】QT-Day2-Qt基础

1> 思维导图 https://lingjun.life/wiki/EmbeddedNote/20QT 2>登录界面优化 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff…

解决IDEA git 提交慢的问题

文章目录 前言解决IDEA git 提交慢的问题 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xff0c;那欢迎常来啊!!! 解…