《python程序设计课程设计报告》opencv的基本用法实验
一、实验目的
1、培养分析问题并对进行建模的能力。
2、熟练运用opencv对图像进行指定变化。
3、理解opencv的工作流程。
二、实验内容
按要求完成使用opencv对图像进行变化。(图像自选)
三、实验步骤
1、读取图片并进行灰度处理,最后展示图片。
2、将图片进行二值化处理,并展示图片。
3、截取原图片的某个区域(区域自选),并进行图像的保存。
4、将原图片进行平滑处理(使用均值、方框、高斯以及中值滤波进行处理,并对比)
5、将两张图片融合(图片任选)
6、提取图片的轮廓(可使用canny算子)
7、使用opencv制作混合大小写字母和数字的四位验证码图片。
四、代码与结果
(请完成程序的编写,并粘贴实验结果)
import cv2
import random
import string
import numpy as np
# 创建随机验证码
def generate():
captcha_length = 4 # 验证码长度
letters = string.ascii_letters + string.digits # 包含大小写字母和数字的字符集
captcha_text = ''.join(random.choices(letters, k=captcha_length))
return captcha_text
# 创建验证码图片
def create():
width, height = 200, 100 # 图片宽度和高度
image = np.zeros((height, width, 3), dtype=np.uint8)
image.fill(255)
captcha_text = generate()
font = cv2.FONT_HERSHEY_SIMPLEX # 字体设置
font_scale = 2.5
font_thickness = 2
# 文字位置
text_width, text_height = TextSize(captcha_text, font, font_scale, font_thickness)[0]
x = int((width - text_width) / 2)
y = int((height + text_height) / 2)
cv2.putText(image, captcha_text, (x, y), font, font_scale, (0, 0, 0), font_thickness, cv2.LINE_AA) # 绘制文字
num_noise_dots = int(width * height * 0.02) # 噪点数量
for _ in range(num_noise_dots):
pt = (random.randint(0, width), random.randint(0, height))
cv2.circle(image, pt, 1, (0, 0, 0), -1)
cv2.imshow('Captcha Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 读取图片并进行灰度处理
def grayscale(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('Grayscale Image', gray)
cv2.waitKey(0)
rectangle函数opencv cv2.destroyAllWindows()
# 图片二值化处理
def erzhihua(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('Binary Image', binary)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 截取图片区域并保存
def save(img):
height, width = img.shape[:2]
roi = img[0:height//2, 0:width//2]
cv2.imshow('Region of Interest', roi)
cv2.imwrite('roi.jpg', roi)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 图片平滑处理
def smooth_image(img):
#1
blur_mean = cv2.blur(img, (5, 5))
cv2.imshow('Mean Blur', blur_mean)
cv2.waitKey(0)
#2l滤波
blur_box = cv2.boxFilter(img, -1, (5, 5))
cv2.imshow('Box Blur', blur_box)
cv2.waitKey(0)
# 3
blur_gaussian = cv2.GaussianBlur(img, (5, 5), 0)
cv2.imshow('Gaussian Blur', blur_gaussian)
cv2.waitKey(0)
# 中值滤波
blur_median = dianBlur(img, 5)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论