当前位置: 首页 > news >正文

【c++|opencv】二、灰度变换和空间滤波---1.灰度变换、对数变换、伽马变换

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

灰度变换、对数变换、伽马变换

1. 灰度变换

#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;int main() 
{Mat img,out_img,img_gray;img = imread("/home/v/home.png");if (img.empty()){cout << "Could not open or find the image" << endl;return -1;}cvtColor(img, img_gray, COLOR_BGR2GRAY);imshow("img gray",img_gray); out_img = img_gray.clone();for (int i=0;i<img_gray.rows;i++){for (int j=0;j<img_gray.cols;j++){// 灰度翻转out_img.at<uchar>(i,j) = 255 - img_gray.at<uchar>(i,j); }}imshow("灰度翻转",out_img);waitKey(0);return 0;}

在这里插入图片描述

2. 对数变换

#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;int main() 
{Mat img,out_img,img_gray;img = imread("/home/v/home.png");if (img.empty()){cout << "Could not open or find the image" << endl;return -1;}cvtColor(img, img_gray, COLOR_BGR2GRAY);imshow("img gray",img_gray); out_img = img_gray.clone();for (int i=0;i<img_gray.rows;i++){for (int j=0;j<img_gray.cols;j++){// 对数变换6*log(r+1) 伽马变换out_img.at<uchar>(i,j) = 6*log((double)(img_gray.at<uchar>(i,j)) + 1);}}normalize(out_img,out_img,0,255,NORM_MINMAX); // 图像归一化convertScaleAbs(out_img,out_img); // 数据类型转换到CV_8Uimshow("对数变换",out_img);waitKey(0);return 0;}

在这里插入图片描述

3. 伽马变换

#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;int main() 
{Mat img,out_img,img_gray;img = imread("/home/v/home.png");if (img.empty()){cout << "Could not open or find the image" << endl;return -1;}cvtColor(img, img_gray, COLOR_BGR2GRAY);imshow("img gray",img_gray); out_img = img_gray.clone();for (int i=0;i<img_gray.rows;i++){for (int j=0;j<img_gray.cols;j++){// 伽马变换6*r^0.5out_img.at<uchar>(i,j) = 6*pow((double)(img_gray.at<uchar>(i,j)),0.5);}}normalize(out_img,out_img,0,255,NORM_MINMAX); // 图像归一化convertScaleAbs(out_img,out_img); // 数据类型转换到CV_8Uimshow("伽马变换",out_img);waitKey(0);return 0;}

在这里插入图片描述

相关文章:

【c++|opencv】二、灰度变换和空间滤波---1.灰度变换、对数变换、伽马变换

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 灰度变换、对数变换、伽马变换 1. 灰度变换 #include <iostream> #include <opencv2/opencv.hpp>using namespace std; using namespace c…...

【vue3】子传父-事件总线-mitt(子组件派发事件,父组件接收事件和传递的参数)

安装库&#xff1a;cnpm install mitt 封装 eventbus.ts&#xff1a; src->utils->eventbus.ts //eventbus.tsimport mitt from mittconst emitter mitt()export default emitter使用 B2.vue&#xff1a; //B2.vue <template><div class"aa">…...

【杂记】java 大集合进行拆分

日常中需要对一个大的集合进行拆分成多个小集合&#xff0c;其主要思路为&#xff1a; 设置需要拆分多少个小集合 A大集合里面有多少条数据 B计算出每个集合里面有多个条数据 CB/A计算出看是否存在余数 DB%A采用集合(List.subList())的方法对大集合进行拆分,循环A变进行集合拆…...

select...for update 锁表了?

在MySQL中&#xff0c;事务A中使用select...for update where id1锁住了&#xff0c;某一条数据&#xff0c;事务还没提交&#xff0c;此时&#xff0c;事务B中去用select ... where id1查询那条数据&#xff0c;会阻塞等待吗&#xff1f; select...for update在MySQL中&#…...

使用ControlNet生成视频(Pose2Pose)

目录 ControlNet 介绍 ControlNet 14种模型分别是用来做什么的 ControlNet 运行环境搭建 用到的相关模型地址 ControlNet 介绍 ControlNet 是一种用于控制扩散模型的神经网络结构&#xff0c;可以通过添加额外的条件来实现对图像生成的控制。它通过将神经网络块的权重复制到…...

基于Docker使用Minikube

1. 查看并操控Minikube状态信息 Minikube相当于docker中的一个container&#xff0c;可以在Docker Desktop中看到并操控Minikube container的相关状态&#xff1a; 通过以下命令查看当前docker中的container&#xff1a; % docker ps CONTAINER ID IMAGE …...

Stable Diffusion系列(一):古早显卡上最新版 WebUI 安装及简单操作

文章目录 Stable Diffusion安装AnimateDiff插件适配sdxl模型适配 Stable Diffusion使用插件安装界面设置基础文生图加入lora的文生图 Stable Diffusion安装 我的情况比较特殊&#xff0c;显卡版本太老&#xff0c;最高也就支持cuda10.2&#xff0c;因此只能安装pytorch1.12.1&…...

ruoyi框架前端vue部署生产环境教程

前端有子目录&#xff0c;后端有项目名称&#xff0c;请看第3种 第1种 前端nginx没有子目录&#xff0c;后端也没有访问的项目名。这种是最简单的。 vue.config.js 只需要修改target中的IP和端口&#xff0c;就是后端访问的IP和端口 # vue.config.js devServer: {host: 0.…...

leetcode第369周赛

2917. 找出数组中的 K-or 值 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 nums 中的 K-or 是一个满足以下条件的非负整数&#xff1a; 只有在 nums 中&#xff0c;至少存在 k 个元素的第 i 位值为 1 &#xff0c;那么 K-or 中的第 i 位的值才是 1 。 返回 nums …...

如何在维格云中自动新增一行或多行数据?

简介​ 在日常使用维格云中,通常会出现一张表中有数据发生变化时,需要另一张表同时新增一些数据,比如: 项目管理中,每新增一个项目,都要在任务表中产生若干个固定的任务;或一个任务要自动生成若干子任务当一笔订单状态变为成交后,可能要在客户成功表中新增一行记录;帮…...

Three.js 开发引擎的特点

Three.js 是一个流行的开源 3D 游戏和图形引擎&#xff0c;用于在 Web 浏览器中创建高质量的三维图形和互动内容。以下是 Three.js 的主要特点和适用场合&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作…...

k8s声明式资源管理方式

Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式&#xff1a;主要用于 api 接口之间消息的传递 YAML 格式&#xff1a;用于配置和管理&#xff0c;YAML 是一种简洁的非标记性语言&#xff0c;内容格式人性化&#xff0c;较易读 YAML 语法格式&#xff1a; ●大小写…...

unity性能优化__Statistic状态分析

在Unity的Game视图右上角&#xff0c;我们会看到有Stats选项&#xff0c;点击会出现这样的信息 我使用的Unity版本是2019.4.16 一、Audio&#xff0c;顾名思义是声音信息 1&#xff1a;Level:-74.8dB 声音的相对强度或音量。通常&#xff0c;音量级别以分贝&#xff08;dB&a…...

Linux Spug自动化运维平台公网远程访问

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、文件…...

3DES算法

简介 本文基于.NET的C#实现3DES算法的加密和解密过程。可以用在加密软件、加密狗等。 代码下载链接&#xff1a;https://download.csdn.net/download/C_gyl/88487942 使用 第一种方法 加密 KeySize&#xff1a;128(16字节)&#xff0c;192&#xff08;24字节&#x…...

手机电池寿命检测

安卓 - 应用商店下载“安兔兔” -accubattery 下载地址 accubattery汉化版下载-Accubattery pro中文免费版(电池检测)下载 v1.5.11 安卓专业版-IT猫扑网...

Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios

目录 1. 搭建项目 1.1 使用vue-cli创建项目 1.2 通过npm安装element-ui 1.3 导入组件 2 创建登录页面 2.1 创建登录组件 2.2 引入css&#xff08;css.txt&#xff09; 2.3 配置路由 2.5 运行效果 3. 后台交互 3.1 引入axios 3.2 axios/qs/vue-axios安装与使用 3.2…...

AVL树、红黑树的介绍和实现[C++]

本文主要对AVL树和红黑树的结构和实现方法进行一定的介绍&#xff0c;仅实现部分接口。 目录 一、AVL树 1.AVL树的概念 2.AVL树节点的定义 3.AVL树的插入 4.AVL树的旋转 1. 新节点插入较高左子树的左侧——左左&#xff1a;右单旋 2. 新节点插入较高右子树的右侧——右…...

meta分析的异质性检验指标如何计算?

一、什么是异质性&#xff1f; 广义&#xff1a;描述参与者、干预措施和一系列研究间测量结果的差异和多样性&#xff0c;或那些研究中内在真实性的变异。 狭义&#xff1a;统计学异质性&#xff0c;用来描述一系列研究中效应量的变异程度&#xff0c;也用于表明除仅可预见的…...

如何在mac 安装 cocos 的 android环境

基本概念&#xff1a; Java: Java 是一种编程语言&#xff0c;由Sun Microsystems&#xff08;现在是 Oracle Corporation&#xff09;开发。Java 是一种跨平台的语言&#xff0c;可以用于开发各种应用程序&#xff0c;包括 Android 应用程序。Android 应用程序的核心代码通常用…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...