《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小时内删除。