机器学习6之图像识别

本文介绍了OpenCV的基础知识,包括边缘检测、图像识别、物体识别和人脸识别等关键步骤,详细阐述了如何利用OpenCV进行图像处理和识别。

1.OpenCv基础

import numpy as np
import cv2 as cv

# 读取图片
original = cv.imread('../data/ml_data/forest.jpg')
cv.imshow('Original', original)
# 显示图片某个颜色通道的图像
blue = np.zeros_like(original)
blue[:, :, 0] = original[:, :, 0]   # 蓝色通道
cv.imshow('Blue', blue)

green = np.zeros_like(original)
green[:, :, 1] = original[:, :, 1]   # 绿色通道
cv.imshow('Green', green)

red = np.zeros_like(original)
red[:, :, 2] = original[:, :, 2]   # 红色通道
cv.imshow('Red', red)

# 图像裁剪
height, width = original.shape[:2]
print(height, width)
l, t = width//4, height//4
r, b = 3*width//4, 3*height//3
cropped = original[t: b, l: r]
cv.imshow('Cropped', cropped)
# 缩放,线性插值
scare1 = cv.resize(original, (width//4, height//4), interpolation=cv.INTER_LINEAR)
cv.imshow('Scare1', scare1)
scare2 = cv.resize(scare1, None, fx=4, fy=4, interpolation=cv.INTER_LINEAR)
cv.imshow('Scare2', scare2)

# cv.waitKey()

# 图像保存
cv.imwrite('scare.jpg', scare2)

2.边缘检测

import cv2 as cv

# original = cv.imread('../data/ml_data/chair.jpg', cv.IMREAD_GRAYSCALE)
# cv.imshow('Original', original)
# # 水平方向索贝尔边缘检测
# h_sobel = cv.Sobel(original, cv.CV_64F, 0, 1, ksize=5)
# cv.imshow('H_sobel', h_sobel)
#
# v_sobel = cv.Sobel(original, cv.CV_64F, 1, 0, ksize=5)
# cv.imshow('V_sobel', v_sobel)
#
# # 拉普拉斯边缘检测
# laplacian = cv.Laplacian(original, cv.CV_64F)
# cv.imshow('Laplacian', laplacian)
#
# # Canny边缘检测
# canny = cv.Canny(original, 50, 240)
# cv.imshow('Canny', canny)

# 亮度提升
original = cv.imread('../data/ml_data/sunrise.jpg')
cv.imshow('Original', original)

# 转灰度图
gray = cv.cvtColor(original, cv.COLOR_BGR2GRAY)
cv.imshow('Gray', gray)

# 直方图均衡化,亮点提升
equalized_gray = cv.equalizeHist(gray)
cv.imshow('Equalized_gray', equalized_gray)

# yuv:亮度,色度,饱和度
yuv = cv.cvtColor(original, cv.COLOR_BGR2YUV)
yuv[..., 0] = cv.equalizeHist(yuv[..., 0])
equalized_color = cv.cvtColor(yuv, cv.COLOR_YUV2BGR)
cv.imshow('Equalized_color', equalized_color)

cv.waitKey()

# 角点检测
original = cv.imread('../data/ml_data/box.png')
cv.imshow('Original', original)

gray = cv.cvtColor(original, cv.COLOR_BGR2
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值