python-opencv 培训课程作业

python-opencv 培训课程作业

作业一:

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

第二步:彩图 -> 灰度图

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

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

python 复制代码
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]),并展示最终结果

代码如下:

python 复制代码
import cv2
import copy
import math
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

mpl.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,设置为0

ret,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)




相关推荐
浩瀚地学2 分钟前
【Java】数组
java·开发语言
黑客思维者5 分钟前
智能配电系统用户敏感数据脱敏详细设计:从静态遮盖到动态策略
c++·python·嵌入式系统·数据脱敏·智能配电系统
陈鋆5 分钟前
Langchain-Chatchat[四、RAG对话流程代码解析]
开发语言·python·langchain
ServBay13 分钟前
Django 6.0 发布,新增原生任务队列与 CSP 支持
后端·python·django
β添砖java17 分钟前
python第一阶段第九章异常、模块、包
开发语言·python
2501_9419820520 分钟前
企业微信Python SDK:高效群发消息实战
开发语言·python·企业微信
yue00820 分钟前
C# Environment类的介绍
开发语言·c#·environment
即将进化成人机28 分钟前
Spring Boot配置文件
java·开发语言·intellij-idea
龙智DevSecOps解决方案31 分钟前
Java开发基础:什么是Spring Boot?一文了解其优势、对比以及如何通过Perforce JRebel实现高效开发
java·开发语言·spring boot·jrebel·perforce·java开发
PPPPickup35 分钟前
easychat---创建,获取,获取详细,退群,解散,添加与移除群组
java·开发语言·后端·maven