图像数据预处理——openCV

目录

灰度化

几何变换

 图像缩放

 中心裁剪

 标准化

图像增强

可视化图像


import numpy as np 
import pandas as pd 
import json
import cv2
import os

 

灰度化

 使用cv2读取图像时,就可以选择读取彩色图像还是灰度图像

image = cv2.imread(filename, flags)

     flags:cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED

  • cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道,可用1作为实参替代
  • cv2.IMREAD_GRAYSCALE:读入灰度图片,可用0作为实参替代
  • cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道,可用-1作为实参替代

单通道读取图片:

def img_processor(data_path):image_src = cv2.imread(data_path,flag = cv2.IMREAD_GRAYSCALE)

 

几何变换

 图像缩放

image = cv2.resize( x, y ) 

 将图像大小调整为 (256, 256)

def img_processor(data_path):image_src = cv2.imread(data_path,flag = cv2.IMREAD_GRAYSCALE)// 调整图像大小为(256,256)image_resized = cv2.resize(image_src, (256,256)) 

 

 中心裁剪

image = image [y0 : y1, x0 : x1] 

其中,y0,x0 是初始索引位置 ,y1,x1 是对角索引位置。

将图片中心剪裁为(224,224)的大小,返回起始索引位置和图片:

def img_processor(data_path,dst_size=(224,224):image_src = cv2.imread(data_path,flag = cv2.IMREAD_GRAYSCALE)image = cv2.resize(image_src, (256,256)) // 图像大小为(256,256)// 计算初始索引位置startx = (256,dst_size[0]) // 2starty = (256,dst_size[1]) // 2// 剪裁image = image[starty:starty+dst_size[0],startx:startx+dst_size[1]]

 

 标准化

image = (image - mean)/std 

def img_processor(data_path,dst_size=(224,224):image_src = cv2.imread(data_path,flag = cv2.IMREAD_GRAYSCALE)// 标准化,使用代码中设置的 _mean 和 _std 对图像像素进行标准化。Image_std = [0.229, 0.224, 0.225]Image_mean = [0.485, 0.456, 0.406]_std = np.array(Image_std).reshape((1,1,3))_mean = np.array(Image_mean).reshape((1,1,3))image_standar = (image_src-_mean) / _std

 

图像增强

cv2.convertScaleAbs是OpenCV中用于对图像进行线性缩放和偏移的函数 。

dst = cv2.convertScaleAbs(src, alpha=alpha, beta=beta)  

#输出图像与输入图像具有相同的大小和类型。

alpha用于调整对比度,beta用于调整亮度。cv2.convertScaleAbs函数用于对图像进行缩放和偏移,从而实现对比度增强和亮度调整

def enhance_contrast_brightness(image, alpha=1.0, beta=0):# 对比度增强和亮度调整enhanced_image = cv2.convertScaleAbs(image, alpha=alpha, beta=beta)return enhanced_image

可视化图像

# 显示原始图像和增强后的图像

cv2.imshow("Image", image)

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

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

相关文章

跨境必看|TikTok账号运营的八大秘籍

国内的传统生意都是可以在抖音上做,那么也可以在TikTok 上重新做一遍。那该如何才能把握住这片巨大的蓝海,TikTok 账号的运营就成为了主要的关键了,对于TikTok账号运营的八大秘籍,大家一起看看是如何做的? 一、固定节…

为什么需要使用SOCKS5代理?

SOCKS代表Socket Secure,是一种网络协议,能够在网络上进行数据传输。SOCKS5是SOCKS协议的第五个版本,它提供了更加安全和灵活的数据传输方式,因此在网络安全和隐私保护方面被广泛应用。在我们的日常生活中,为什么需要使…

VMware虚拟机安装详细教程

VMware下载安装好后,下载好我们要安装的操作系统的镜像文件后,此处安装的为centos7版本,就可以开始安装了。 1点击下一步 image 2、勾选【我接受条件款协议中的条款】,然后点击【下一步】。 image 3、取消勾选,然后点…

深拷贝和浅拷贝--深拷贝

深拷贝 深拷贝是指在复制对象时&#xff0c;不仅复制对象的所有成员变量的值&#xff0c;还复制成员变量指针或引用所指向的实际数据。这意味着原对象和拷贝对象拥有独立的底层数据&#xff0c;互不影响。 #include <iostream>class Person { public:int* age;// 构造函…

富在术数,不在劳身 财富的积累更多依赖于智慧和策略,而不是单纯的体力劳动 GPT-4o免费用

"富在术数&#xff0c;不在劳身"这句话的意思是财富的积累更多依赖于智慧和策略&#xff0c;而不是单纯的体力劳动。这句话强调了智慧和技巧在获取财富过程中的重要性&#xff0c;提示人们在追求财富时&#xff0c;应注重策略和方法的运用&#xff0c;而不仅仅依靠辛…

【JAVA】单元测试的简单应用

单元测试是验证软件中最小可测试部分正确性的自动化测试。在Java中&#xff0c;单元测试通常针对类的方法或函数进行。以下是单元测试的一般写法&#xff0c;以及一些常用的单元测试框架。 1. 准备工作 在开始编写单元测试之前&#xff0c;需要确保项目中包含了单元测试框架。…

元组(tuple)

1. 区别 和列表相似&#xff0c;本质上是一种有序的集合元组和列表的不同之处&#xff1a; a.列表:[ ] 元组&#xff1a;( ) b.列表中的元素可以进行增加和删除操作&#xff1b;但是&#xff0c;元组中的元素不能修改【元素&#xff1a;一旦被初始化&#xff0c;将不能发生改…

prompt工程策略(三:使用 LLM 防护围栏创建系统提示)

原文&#xff1a;我是如何赢得GPT-4提示工程大赛冠军的 原文的原文&#xff1a; How I Won Singapore’s GPT-4 Prompt Engineering Competition &#xff01;&#xff01;本内容仅适用于具有 System Prompt&#xff08;系统提示&#xff09;功能的 LLM。具有这一功能的最著名 …

python dbUtil

# -*- coding: utf-8 -*- import pyodbc import cx_Oracleclass Database:def __init__(self, driver, server, database, username, password):"""链接数据库:param driver: 数据库驱动:param server: 地址:端口:param database: 数据库名称:param usernam…

工业无风扇计算机的优点

无风扇计算机往往采用紧凑且密封的外形&#xff0c;使其坚固耐用&#xff0c;使其能够在需要现场工程师进行维护之前承受恶劣的环境数年。机载移动部件较少或没有移动部件会降低组件无法按预期运行的可能性&#xff0c;或者更糟糕的是发生故障和损坏。采用工业组件和较低的散热…

您的文件和驱动器上的“密码保护”有多安全?

某些行业&#xff08;例如医疗保健、法律和公司&#xff09;的人们在通过电子邮件发送文件时通常依赖密码保护&#xff0c;认为它可以提供足够的安全性来防止窥探。然而&#xff0c;对 PDF 或 Excel 文件进行简单的密码保护并不像看起来那样万无一失。 使用密码保护文件而不加…

亿级流量系统架构设计与实战

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

Oracle Exists、 NOT Exists用法

Exists 在Oracle数据库中&#xff0c;EXISTS关键字用于子查询中&#xff0c;其主要用途是检查子查询是否至少返回了一行数据。它不关心子查询返回的实际数据值&#xff0c;只关心是否有结果。EXISTS通常用于基于行的存在性测试&#xff0c;相比IN或JOIN等操作&#xff0c;它在某…

自定义扩展文件支持

遇到问题加QQ群聊 群主在线解答 点击加入群聊【星辰开发】 Redis pip install redisdef get_conn():from redis import Redisfrom configparser import ConfigParserconfig ConfigParser()config.read(Config.ini)Redis_Host config[Redis][Host]Redis_Port config[Redis]…

Spring AI开发前期开发指导(maven依赖下载问题解决)

文章目录 说明开发条件网络环境准备本地环境准备开发工具准备 特殊说明maven配置项目jar一致下载错误解决可行的版本搭配 说明 动力节点视频教程地址&#xff0c;本文章学习该教程&#xff0c;同时说明的maven配置问题导致的项目依赖下载失败的问题和其他问题的记录。 开发条…

nginx-rtmp

1.已经安装nginx&#xff1b;configure配置模块&#xff1b;make编译无需安装&#xff1b;把objs/nginx复制到已安装的宁目录下 ./configure --prefix/usr/local/nginx --add-module/usr/local/src/fastdfs-nginx-module/src --add-module/usr/local/src/nginx-rtmp-module-mas…

浅谈SiC MOSFET之双脉冲原理

1.双脉冲实验实验的必要性 在平常的使用中&#xff0c;我们基本通过芯片手册来了解功率器件的各种性能参数&#xff0c;但是手册中的参数的测量环境都是在理想状态下&#xff0c;与实际使用或多或少都会有差别。通过双脉冲实验可以获取器件在真实工况下的参数&#xff0c;对于产…

Runes 生态一周要览 ▣ 2024.5.06-5.12

1、香港「Runes Asia 2024」符文峰会之行圆满结束。 2、BEVM 宣布首次大规模 RUNES 空投现已结束&#xff01;符文桥即将上线。 3、来自 Book of Blob 的交互式视听信息铭刻了第一个 Epic Sat 在 coinex 上市交易。 4、 Binance Research 发布了对 Runes 的报告。 5、HOPE•…

redis报错500

之前自己举一反三把value也给序列化了&#xff1a; 然后报错了&#xff1a; 原因是这里传入的是Integer类型&#xff0c;序列化的话就变为string类型了

Android Studio 查看打开Room数据库数据

关于作者&#xff1a; CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP&#xff0c;带领团队单日营收超千万。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业化变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览…