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

python-opencv 培训课程作业

python-opencv 培训课程作业

作业一:
第一步:读取 res 下面的 flower.jpg,读取彩图,并用 opencv 展示

第二步:彩图 -> 灰度图
第三步:反转图像:最大图像灰度值减去原图像,即可得到反转的图像

第四步:用 plt 对比展示原图、灰度图、反转图 plt.subplot()

import os
import cv2
import  matplotlib.pyplot as plt
import numpy as np
#默认加载彩图
path=r'flower.jpg'# imread(path,way)
#way=0 灰度图。way=1 彩图
#默认彩图#cv2.COLOR_BGR2GRAY#cv2.COLOR_BGR2RGB
#cv2.COLOR_BGR2HSV,HSV-色调、饱和度、亮度def cv_show(name,img):cv2.imshow(name,img)#cv2.waitKey(0),接收0,表示窗口暂停cv2.waitKey(0)#销毁所有窗口cv2.destroyAllWindows()
# 第一步:读取 res 下面的 flower.jpg,读取彩图,并用 opencv 展示
img=cv2.imread(path)cv_show('flower',img)# 彩图 -> 灰度图
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 反转图像:最大图像灰度值减去原图像,即可得到反转的图像max_gray_value=img_gray.max()
print(max_gray_value)covert_img=max_gray_value-img# 用 plt 对比展示原图、灰度图、反转图 plt.subplot()plt.subplot(131)
img = img[:,:, ::-1]
plt.imshow(img)plt.title('original')plt.subplot(132)
plt.imshow(img_gray,'gray')
plt.title('img_gray')
plt.subplot(133)
covert_img=covert_img[:,:, ::-1]
plt.imshow(covert_img)
plt.title('covert_img')plt.show()

作业二:
第一步:第一步:读取 res 下面的 girl.jpg,读取彩图,,并转换为rbg格式展示

第二步:灰度化处理,并展示
第三步:灰度图二值化处理,像素值大于50,设置为255,小于50,设置为0
第四步:伽马变换:通过幂运算来调整图像的对比度和亮度,每个像素值取 0.8 次幂,参考 math.pow(gamma[i][j], 0.8),并展示最终结果
第五步:对数变换:通过对每个像素点的灰度值进行对数计算,以增强图像中低灰度级的细节,增强图像的整体对比度,对每个像素求 3 * math.log(1 + log[i][j]),并展示最终结果

代码如下:

import cv2
import copy
import math
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as npmpl.rcParams["font.sans-serif"] = ["SimHei"]  # 指定默认字体 SimHei 黑体# 读入原始图像 res/girl.jpg,并用展示 rgb
path=r'girl.jpg'def cv_show(name,img):cv2.imshow(name,img)#cv2.waitKey(0),接收0,表示窗口暂停cv2.waitKey(0)#销毁所有窗口cv2.destroyAllWindows()
# 第一步:读取 res 下面的 girl.jpg,读取彩图,并转换为rbg格式展示
img=cv2.imread(path)img_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)cv_show('original',img)
cv_show('girl_rgb',img_rgb)
#cv_show('girl_rgb',img)
# 灰度化处理,并展示
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)cv_show('girl_gray',img_gray)
# 二值化处理# gray是灰度图,像素值大于50,设置为255,小于50,设置为0ret,dst1=cv2.threshold(img_gray,50,255,cv2.THRESH_BINARY)
cv_show('girl_gray_binary',dst1)# 伽马变换:通过幂运算来调整图像的对比度和亮度,每个像素值取 0.8 次幂,参考 math.pow(gamma[i][j], 0.8),并展示最终结果
rows = img.shape[0]  # rows、cols 行列数,rows 也就是高度
cols = img.shape[1]# 设定伽马值
gamma = 0.8# 对图像进行伽马变换
gamma_correction = np.power(img_gray / 255.0, gamma)
gamma_correction = (gamma_correction * 255).astype(np.uint8)
cv_show('girl_gamma_correctiony',gamma_correction)# 对数变换:通过对每个像素点的灰度值进行对数计算,以增强图像中低灰度级的细节,增强图像的整体对比度,对每个像素求 3 * math.log(1 + log[i][j]),并展示最终结果
for i in range(rows):for j in range(cols):img_gray[i][j]= 3 * math.log(1 + img_gray[i][j])#   print(img_gray[i][j])cv_show('log_img',img_gray)

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

相关文章:

python-opencv 培训课程作业

python-opencv 培训课程作业 作业一: 第一步:读取 res 下面的 flower.jpg,读取彩图,并用 opencv 展示 第二步:彩图 -> 灰度图 第三步:反转图像:最大图像灰度值减去原图像,即可得…...

【Go入门】并发

【Go入门】并发 有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行。 goroutine goroutine是Go并行设计的核心。goroutine说到底其实就是协程,…...

Java虚拟机运行时数据区结构详解

Java虚拟机运行时数据区结构如图所示 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 多线程切换时,为了能恢复到正确的执行位置,每条线程…...

华为OD机试 - 转盘寿司(Java JS Python C)

目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码...

【ATTCK】MITRE Caldera-emu插件

CALDERA是一个由python语言编写的红蓝对抗工具(攻击模拟工具)。它是MITRE公司发起的一个研究项目,该工具的攻击流程是建立在ATT&CK攻击行为模型和知识库之上的,能够较真实地APT攻击行为模式。 通过CALDERA工具,安全…...

23111709[含文档+PPT+源码等]计算机毕业设计基于Spring Boot智能无人仓库管理-进销存储

文章目录 **软件开发环境及开发工具:****功能介绍:****论文截图:****数据库:****实现:****代码片段:** 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 软件开发环境及…...

SDUT OJ《算法分析与设计》贪心算法

A - 汽车加油问题 Description 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产生一个最优解。 对于给定的n和k个加油站位置,计算最少加油次数。 I…...

金融业务系统: Service Mesh用于安全微服务集成

随着云计算的不断演进,微服务架构变得日益复杂。为了有效地管理这种复杂性,人们开始采用服务网格。在本文中,我们将解释什么是Service Mesh,为什么它对现代云架构至关重要,以及它是如何解决开发人员今天面临的一些最紧…...

Linux下快速确定目标服务器支持哪些协议和密码套件

实现原理是利用TLS协议的特点和握手过程来进行测试和解析响应来确定目标服务器支持哪些TLS协议和密码套件。 在TLS握手过程中,客户端和服务器会协商并使用相同的TLS协议版本和密码套件来进行通信。通过发送特定的握手请求并分析响应,可以确定目标服务器…...

LeetCode100122. Separate Black and White Balls

文章目录 一、题目二、题解 一、题目 There are n balls on a table, each ball has a color black or white. You are given a 0-indexed binary string s of length n, where 1 and 0 represent black and white balls, respectively. In each step, you can choose two a…...

系列二十六、idea安装javap -c

一、概述 javap -c是一个能够将.java文件反编译为.class文件的指令,例如我在idea中编写了一个Car.java文件,我想看看这个类被编译后长什么样的,就可以使用该指令进行查看。 二、配置 2.1、 Java Bytecode Decompiler File>Settings>Pl…...

nginx 如何根据IP做限流,以及 nginx 直接返回 json 格式数据

Nginx 限流配置 Nginx是如何限流的。随着业务的扩散,系统并发越来越高时,有三样利器用来保护系统,分别是缓存、降级和限流。 随着业务的扩散,系统并发越来越高时,有三样利器用来保护系统,分别是缓存、降…...

C语言链式栈

stack.h typedef struct Node_s {int data;struct Node_s *pNext; } Node_t, *pNode_t;typedef struct Stack_s {pNode_t pHead;//栈顶指针,指向了链表的第一个结点int size;//栈的元素个数 } Stack_t, *pStack_t;void init(pStack_t pStack); void push(pStack_t …...

【Go入门】 Go的http包详解

【Go入门】 Go的http包详解 前面小节介绍了Go怎么样实现了Web工作模式的一个流程,这一小节,我们将详细地解剖一下http包,看它到底是怎样实现整个过程的。 Go的http有两个核心功能:Conn、ServeMux Conn的goroutine 与我们一般编…...

解决k8s node节点报错: Failed to watch *v1.Secret: unknown

现象: 这个现象是发生在k8s集群证书过期,重新续签证书以后。 记得master节点的/etc/kubernetes/kubelet.conf文件已经复制到node节点了。 但是为什么还是报这个错,然后运行证书检查命令看一下: 看样子是差/etc/kubernetes/pki/…...

日志维护库:loguru

在复杂的项目中,了解程序的运行状态变得至关重要。在这个过程中,日志记录(logging)成为我们追踪、调试和了解代码执行的不可或缺的工具。在python语言中常用logging日志库,但是logging日志库使用相对繁琐,在…...

【Go入门】 Go如何使得Web工作

【Go入门】 Go如何使得Web工作 前面小节介绍了如何通过Go搭建一个Web服务,我们可以看到简单应用一个net/http包就方便的搭建起来了。那么Go在底层到底是怎么做的呢?万变不离其宗,Go的Web服务工作也离不开我们第一小节介绍的Web工作方式。 w…...

汽车虚拟仿真视频数据理解--CLIP模型原理

CLIP模型原理 CLIP的全称是Contrastive Language-Image Pre-Training,中文是对比语言-图像预训练,是一个预训练模型,简称为CLIP。该模型是 OpenAI 在 2021 年发布的,最初用于匹配图像和文本的预训练神经网络模型,这个任…...

【Web】Ctfshow SSTI刷题记录1

目录 ①web361 362-无过滤 ②web363-过滤单双引号 ③web364-过滤单双引号和args ④web365-过滤中括号[]、单双引号、args ⑤web366-过滤单双引号、args、中括号[]、下划线 ⑦web367-过滤单双引号、args、中括号[]、下划线、os ⑧web368-过滤单双引号、args、中括号[]、下…...

【广州华锐互动】VR可视化政务服务为公众提供更直观、形象的政策解读

虚拟现实(VR)技术正在逐渐应用于政务服务领域,为公众提供更加便捷、高效和个性化的服务体验。通过VR眼镜、手机等设备,公众可以在虚拟环境中参观政务服务中心,并根据自己的需求选择不同的办事窗口或事项进行咨询和办理…...

STM32G431实战:拆解蓝桥杯嵌入式‘分任务’调度核心,让你的代码像RTOS一样清晰

STM32G431实战:构建轻量级时间片轮询调度框架 在嵌入式开发中,尤其是资源受限的竞赛平台如蓝桥杯嵌入式赛道,如何高效管理多个外设任务是一个常见挑战。传统的while(1)轮询方式会导致代码臃肿且难以维护,而完整RTOS又可能超出硬件…...

清华大学学位论文LaTeX模板:告别格式烦恼的终极指南

清华大学学位论文LaTeX模板:告别格式烦恼的终极指南 【免费下载链接】thuthesis LaTeX Thesis Template for Tsinghua University 项目地址: https://gitcode.com/gh_mirrors/th/thuthesis 还在为论文格式调整而烦恼吗?清华大学thuthesis LaTeX模…...

基于树莓派与ADS1248的高精度多通道RTD温度采集系统设计与实践

1. 项目概述:低成本、高精度的多通道温度采集方案在工业自动化、环境监测或者实验室数据记录领域,多通道、高精度的温度测量一直是个既关键又有点“烧钱”的环节。传统的方案要么通道数有限,要么精度和成本难以兼得,尤其是在需要多…...

Switch控制器PC适配难题的技术解决方案:BetterJoy架构解析与高级配置指南

Switch控制器PC适配难题的技术解决方案:BetterJoy架构解析与高级配置指南 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: ht…...

Recuva数据恢复实测:文件被电脑管家粉碎后还能救回来吗?

Recuva数据恢复实战:不同删除方式下的恢复效果对比 当重要文件被误删时,数据恢复工具往往成为最后的救命稻草。但你是否想过,不同的删除方式会对恢复成功率产生怎样的影响?本文将带你深入探索Recuva这一经典数据恢复工具在面对普通…...

Keil C166汇编头文件路径问题解决方案

1. 问题现象与背景解析作为一名长期使用Keil C166开发工具的嵌入式工程师,我最近在移植一个老项目时遇到了一个典型的路径查找问题。项目混合了C和汇编代码,当我把自定义的DEFS.INC汇编头文件放在项目INC目录下,并在Target Environment中正确…...

你的音乐不该被格式绑架:用QMCDecode一键解锁QQ音乐加密文件

你的音乐不该被格式绑架:用QMCDecode一键解锁QQ音乐加密文件 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录&#xff0c…...

OpenCL图像格式兼容性与性能优化指南

1. OpenCL图像格式兼容性解析在OpenCL编程中,图像处理是一个核心功能模块。图像格式的正确配置直接影响着内核程序的执行效率和结果的准确性。CL_UNSIGNED_INT8和CL_RGB作为OpenCL中常见的图像格式参数,它们的兼容性问题值得深入探讨。1.1 图像格式描述符…...

Exchange渗透:从邮件服务器到AD特权代理的系统化利用

1. 为什么Exchange渗透不是“扫个端口爆破邮箱”就完事了?很多人一听到“Exchange渗透”,脑子里立刻跳出几个关键词:OWA登录页、Autodiscover、EWS接口、NTLM中继、ProxyLogon——然后顺手丢个nuclei模板去扫,再跑一遍爆破脚本&am…...

保姆级教程:用Python将EEG脑电信号转成图像,喂给VGG+LSTM做疲劳检测

从EEG信号到疲劳检测图像:Python实战全流程解析当脑电波遇见计算机视觉,会擦出怎样的火花?传统EEG分析往往局限于时频域特征提取,而本文将带你探索一种革命性的思路——将多通道脑电信号转化为彩色拓扑图像,让卷积神经…...