初识opencv
1.加载图片
import cv2 as cv
# 路径需要为英文,含中文可能读取不到数据
image = cv.imread(r'C:\Users\Riven\Desktop\wjn.jpg')
# 前面的字符串是显示图片的窗口的名字
cv.imshow('output image', image)
# 等待键盘输入,单位是毫秒,输入0为无限等待
cv.waitKey(0)
# cv底层使用C++实现需要释放资源
cv.destroyAllWindows()
2.转换图片为灰度图 cv.cvtColor(*, code=cv.COLOR_BGR2GRAY)
import cv2 as cv
# opencv 默认的图片彩色格式为BGR
image_BGR = cv.imread(r'C:\Users\Riven\Desktop\wjn.jpg')
# 转换为灰度图像 参数1为数据源,参数2为转换格式
image_gary = cv.cvtColor(image_BGR, code=cv.COLOR_BGR2GRAY)
# 转换为RBG图像
image_RGB = cv.cvtColor(image_BGR, code=cv.COLOR_BGR2RGB)
cv.imshow('output image', image_gary)
# 保存图片,参数1为保存路径,2为保存的数据
cv.imwrite('wjn.jpg', image_gary)
# 等待键盘输入,单位是毫秒,输入0为无限等待
cv.waitKey(0)
# cv底层使用C++实现需要释放资源
cv.destroyAllWindows()
3.修改尺寸 cv.resize(*, *)
拉伸图像,不是剪裁,会产生形变
import cv2 as cv
# opencv 默认的图片彩色格式为BGR
image_BGR = cv.imread(r'C:\Users\Riven\Desktop\wjn.jpg')
cv.imshow('show', image_BGR)
# 修改尺寸
resize_image = cv.resize(image_BGR, dsize=(400, 360))
cv.imshow('resize', resize_image)
# 输入q时关闭图像显示
while True:
# cv.waitKey(0) 会返回当前键盘输入的符号的ascall码
# ord返回的时参数的ascall码
if ord('q') == cv.waitKey(0):
break
# cv底层使用C++实现需要释放资源
cv.destroyAllWindows()
4.绘制图形
import cv2 as cv
# opencv 默认的图片彩色格式为BGR
image_BGR = cv.imread(r'C:\Users\Riven\Desktop\wjn.jpg')
# x,y值,宽和高
x, y, w, h = 50, 50, 80, 80
# 图片坐标原点为左上角
# 矩形的位置参数为矩形左上角(x,y)和右下角(x+w,y+h)的坐标
# color为BGR通道,所以在画图时线的颜色也是BGR
# thickness=2 为线条的粗细
cv.rectangle(image_BGR, (x, y, x + w, y + h), color=(0, 255, 0), thickness=2)
# 参数1为图片数据
# center为圆心坐标
# radius为半径
cv.circle(image_BGR, center=(x+w//2, y+h//2), radius=w//2, color=(0, 255, 0), thickness=2)
cv.imshow('show', image_BGR)
# 输入q时关闭图像显示
while True:
# cv.waitKey(0) 会返回当前键盘输入的符号的ascall码
# ord返回的时参数的ascall码
if ord('q') == cv.waitKey(0):
break
# cv底层使用C++实现需要释放资源
cv.destroyAllWindows()