1、读取图片并进行灰度处理,最后展示图片。 2、将图片进行二值化处理,并展示图片。 3、截取原图片的某个区域(区域自选),并进行图像的保存。 4、将原图片进行平滑处理(使用均值、方框、高斯以及中值滤波进行处理,并对比) 5、将两张图片融合(图片任选) 6、提取图片的轮廓(可使用canny算子) 7、使用opencv制作混合大小写字母和数字的四位验证码图片。
时间: 2023-07-10 16:09:28 浏览: 151
很高兴为您解答,以下是每个问题的代码实现:
1、读取图片并进行灰度处理,最后展示图片。
```python
import cv2
# 读取图片
img = cv2.imread('example.jpg')
# 灰度处理
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 展示图片
cv2.imshow('gray image', gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
2、将图片进行二值化处理,并展示图片。
```python
import cv2
# 读取图片
img = cv2.imread('example.jpg')
# 灰度处理
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)
# 展示图片
cv2.imshow('binary image', binary_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
3、截取原图片的某个区域(区域自选),并进行图像的保存。
```python
import cv2
# 读取图片
img = cv2.imread('example.jpg')
# 截取图片的某个区域
x, y, w, h = 100, 100, 200, 200
crop_img = img[y:y+h, x:x+w]
# 保存图片
cv2.imwrite('crop_img.jpg', crop_img)
```
4、将原图片进行平滑处理(使用均值、方框、高斯以及中值滤波进行处理,并对比)
```python
import cv2
# 读取图片
img = cv2.imread('example.jpg')
# 均值滤波
mean_img = cv2.blur(img, (5, 5))
# 方框滤波
box_img = cv2.boxFilter(img, -1, (5, 5))
# 高斯滤波
gaussian_img = cv2.GaussianBlur(img, (5, 5), 0)
# 中值滤波
median_img = cv2.medianBlur(img, 5)
# 对比展示
cv2.imshow('original image', img)
cv2.imshow('mean filter', mean_img)
cv2.imshow('box filter', box_img)
cv2.imshow('gaussian filter', gaussian_img)
cv2.imshow('median filter', median_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
5、将两张图片融合(图片任选)
```python
import cv2
# 读取两张图片
img1 = cv2.imread('example.jpg')
img2 = cv2.imread('example2.jpg')
# 图片融合
alpha = 0.5
beta = 1 - alpha
blend_img = cv2.addWeighted(img1, alpha, img2, beta, 0)
# 展示图片
cv2.imshow('blend image', blend_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
6、提取图片的轮廓(可使用canny算子)
```python
import cv2
# 读取图片
img = cv2.imread('example.jpg')
# 灰度处理
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Canny算子提取轮廓
edges = cv2.Canny(gray_img, 100, 200)
# 展示图片
cv2.imshow('edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
7、使用opencv制作混合大小写字母和数字的四位验证码图片。
```python
import cv2
import numpy as np
import random
# 生成随机验证码
def generate_captcha():
# 验证码的字符集
char_set = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
# 验证码的长度
captcha_len = 4
# 生成验证码
captcha = ''.join(random.sample(char_set, captcha_len))
return captcha
# 创建验证码图片
def create_captcha_image(captcha):
# 图片大小
width, height = 120, 30
# 创建黑色背景图片
img = np.zeros((height, width, 3), np.uint8)
img.fill(0)
# 字体
font = cv2.FONT_HERSHEY_SIMPLEX
# 随机字符颜色
color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
# 写入验证码
cv2.putText(img, captcha, (10, 20), font, 0.8, color, 2, cv2.LINE_AA)
# 高斯滤波
img = cv2.GaussianBlur(img, (3, 3), 0)
# 二值化处理
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
return img
# 生成验证码
captcha = generate_captcha()
# 创建验证码图片
captcha_img = create_captcha_image(captcha)
# 展示图片
cv2.imshow('captcha image', captcha_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文