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)

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

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

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

相关文章

基于Vue+SpringBoot的大病保险管理系统 开源项目

项目编号: S 031 ,文末获取源码。 \color{red}{项目编号:S031,文末获取源码。} 项目编号:S031,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统配置维护2.2 系统参保管理2.3 大…

lv11 嵌入式开发 ARM指令集中(伪操作与混合编程) 7

目录 1 伪指令 2 伪操作 3 C和汇编的混合编程 4 ATPCS协议 1 伪指令 本身不是指令,编译器可以将其替换成若干条等效指令 空指令NOP 指令LDR R1, [R2] 将R2指向的内存空间中的数据读取到R1寄存器 伪指令LDR R1, 0x12345678 R1 0x12345678 LDR伪指令可以将任…

各类语言真实性能比较列表

这篇文章是我所做或将要做的所有真实世界性能比较的索引。如果你对想要看到的其他真实世界案例有建议,请在评论中添加。 用例 1 — JWT 验证 & MySQL 查询 该用例包括: 从授权头部获取 JWT验证 JWT 并从声明中获取电子邮件使用电子邮件执行 MySQL…

AI实践与学习1_Milvus向量数据库实践与原理分析

前言 随着NLP预训练模型(大模型)以及多模态研究领域的发展,向量数据库被使用的越来越多。 在XOP亿级题库业务背景下,对于试题召回搜索单单靠着ES集群已经出现性能瓶颈,因此需要预研其他技术方案提高试题搜索召回率。…

Fibonacci 数列与黄金分割

mapp[1 for item in range(30)] for item in range(3,30):mapp[item]mapp[item-1]mapp[item-2]pass numint(input()) if num>19:print("0.61803399")pass else:anss float((mapp[num]*1.0) / (mapp[num 1]*1.0))print(format(anss,.8f))进行短程的打表就可以看出…

hypermesh常用快捷键

#hypermesh常用快捷键

【Linux】-进程间通信-命名管道文件(没有关系的进程间进行通信),以及写一个日志模板

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

mfc140.dll是什么文件?如何修复mfc140.dll丢失的方法分享

​mfc140.dll丢失的原因 未正确安装Microsoft Visual C Redistributable:mfc140.dll是Visual C库的一部分,如果没有正确安装Visual C Redistributable,可能导致mfc140.dll丢失。 系统文件损坏:由于病毒感染、系统错误或其他原因…

Spring Cloud学习(十)【Elasticsearch搜索功能 分布式搜索引擎02】

文章目录 DSL查询文档DSL查询分类全文检索查询精准查询地理坐标查询组合查询相关性算分Function Score Query复合查询 Boolean Query 搜索结果处理排序分页高亮 RestClient查询文档快速入门match查询精确查询复合查询排序、分页、高亮 黑马旅游案例 DSL查询文档 DSL查询分类 …

C语言入门笔记—static、extern、define、指针、结构体

一、static static修饰局部变量的时候,局部变量出了作用域,不销毁。本质上,static修饰局部变量的时候,改变了变量的存储位置。详见下图,当a不被static修饰和被static修饰的时候。 C/C static关键字详解&#xff…

Idea远程debug

Idea远程debug 一、方法 1.1、启动时加参数 java -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 -jar remote-debug-0.0.1-SNAPSHOT.jar1.2、运行时加参数 在没有显式-agentlib:jdwp参数的情况下进行远程调试: 首先,确保您的Sprin…

X3DAudio1_7.dll丢失原因,X3DAudio1_7.dll丢失怎样解决分享

X3DAudio1_7.dll是一款由微软公司开发的音频处理库,主要用于实现三维音频效果。这个库主要应用于游戏开发、多媒体应用等领域,它可以使得音频更加真实、自然地表现出空间感。如果在使用过程中遇到X3DAudio1_7.dll丢失的问题,可以尝试以下五个…