opencv-python

学习视频: https://www.bilibili.com/video/av68735378
官方文档: https://docs.opencv.org/master/d6/d00/tutorial_py_root.html

pip3 install opencv-python -i https://pypi.doubanio.com/simple

import cv2 as cv
import numpy as np
from PIL import Image

读取图像

cv.imread()

img1 = cv.imread(filePath+fileName, 0) # 以灰度模式读入图像
img2 = cv.imread(filePath+fileName, 1) # 以彩色模式读入图像,忽略 透明度
img3 = cv.imread(filePath+fileName, -1) # 以彩色模式读入图像,包含 透明度

显示图像

cv.imshow()

method1

cv.imshow("img1", img1) # 创建窗口侠士,窗口名,图像
cv.waitKey() # 0表示等待键盘输入,按任意键继续运行程序
cv.destroyAllWindows() # 销毁 所有窗口

method2

cv.nameWindow("img1", cv.WINDOW_NORMAL) # 先创建窗口,在显示图像
# cv.WINDOW_NORMAL 允许调整串口大小
# cv.WINDOW_AUTOSIZE 自动生成靠出口大小
cv.imshow("img1", img1) # 创建窗口侠士,窗口名,图像
cv.waitKey(0) # 0表示等待键盘输入,按任意键继续运行程序
cv.destroyAllWindows() # 销毁 所有窗口

method3 - matplotlib refpython-matplotlib-image-numpy-相互配合

%matplotlib inline
import matplotlib.pyplot as plt

img1 = Image.open(r"")
plt.imshow(img1) # nparray 数组直接转为图像
# 颜色 出问题,需要转一下哈
# imgRGB= cv.cvtColor(cv.imread(filePath+fileName, 1), cv.COLOR_BGR2RGB)
# plt.imshow(imgRGB)
plt.show()

保存图像

cv.imwrite()

cv.imwrite("img1.png", img1)

waitKey

cv.waitKey()

cv.waitKey(毫秒)
cv.waitKey(1000) # 1s
# 0 无限等待

# 返回键盘的值
keyValue = cv.waitKey(0) & 0xFF
print(k)
cv.destroyAllWindows()

if keyValue == key.ESC:
	print("ESC 退出")
elif keyValue == ord('s'):
	cv.imwrite("img1.png", img1)
cv.destroyAllWindows()

# ord 去获取 键盘编码的 一个方法
# ord-->Retuen the Unicode code point for a one-character string.
# ord('a') 97
# ord('p') 112

color = (255, 0, 0)
width = 3

画线段

cv.line()

# 需要起点 和 终点 以及 线段的颜色 和 粗细度(宽度)
img = np.zeros((512, 512, 3), np.uint8) # 模拟出一个512*512的彩色图像
cv.line(img1, (0,0), (511, 511), color, width) # 画5px宽度的蓝色线段
imgRGB= cv.cvtColor(img, cv.COLOR_BGR2RGB)
plt.imshow(imgRGB)
plt.show()

画方形

cv.rectangle()

# 需要左上角 和 右下角 以及 方形的颜色 和 粗细度(宽度)
cv.rectangle(img, (384, 0), (510, 128), color, width)
imgRGB= cv.cvtColor(img, cv.COLOR_BGR2RGB)
plt.imshow(imgRGB)
plt.show()

画圆

cv.circle()

# 需要 确定 圆心 和 半径 以及 方形的颜色 和 粗细度(宽度)
cv.circle(img, (300, 300), 63, color, width)
imgRGB= cv.cvtColor(img, cv.COLOR_BGR2RGB)
plt.imshow(imgRGB)
plt.show()

画椭圆

cv.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])

  1. img, 椭圆 所在的 图片
  2. center, 椭圆中心点的坐标
  3. axes, 长轴和短轴的长度
  4. angle, 整个椭圆沿 顺时针 方向旋转的角度
  5. startAngle、endAngle, 椭圆弧面沿 顺时针 方向起始和终止角度,如果是0、 180,就是整个椭圆在图片中间绘制下半个椭圆
  6. -1 全填充,10 宽度为10px的椭圆线
# 需要 确定 圆心 和 半径 以及 方形的颜色 和 粗细度(宽度)
cv.ellipse(img, (300, 300), (100, 50), 0, 0, 180, color, -1)
imgRGB= cv.cvtColor(img, cv.COLOR_BGR2RGB)
plt.imshow(imgRGB)
plt.show()

画多边形

cv.polylines()

  1. 画多边形,实际是画一组线段
  2. 需要确定各个顶点的坐标
  3. 点形状 形如Rows * 1 *2 的数组,其中Rows 是顶点的数量,类型必须是int32
  4. 用黄色4个顶点的多边形,如下:
color = (0, 255, 255)
width = 10
img = np.zeros((512, 512, 3), np.uint8)
pts = np.array([[100, 100], [300, 150], [400, 400], [50, 350]], np.int32)
print(np.shape(pts))
pts = pts.reshape((-1, 1, 2)) # 在大于二维空间时,需要转为二维空间中的点,只有二维的我们最熟悉?还是说图像是二维显示出来的?这一步留意一下下哈!!!
print(np.shape(pts))

cv.polylines(img, [pts], True, color, width) # True 闭合图形
cv.polylines(img, [pts], False, color, width) # False 不闭合图形

imgRGB= cv.cvtColor(img, cv.COLOR_BGR2RGB)
plt.imshow(imgRGB)
plt.show()

在图片上添加文字

cv.putText()

  1. 文字内容
  2. 位置(实际是 在线上写字时,横线的起始位置)
  3. 字体类型
  4. 字体大小
  5. 字体属性,颜色、粗细、线条类型等
font = cv.FONT_HERSHEY_SIMPLEX

cv.putText(img, 'HUGH_TEST', (10, 30), font, 4, color, width)

imgRGB= cv.cvtColor(img, cv.COLOR_BGR2RGB)
plt.imshow(imgRGB)
plt.show()
OpenCV-PythonOpenCVPython绑定库,它提供了丰富的计算机视觉功能和图像处理算法。它可以用于图像处理、对象检测、特征提取和跟踪、图像分割等任务。为了安装OpenCV-Python,您可以使用pip命令。如果只需要主要模块,可以运行"pip install opencv-python",如果还需要额外的贡献模块,可以运行"pip install opencv-contrib-python"。根据不同的需求,您可以选择安装不同的版本。目前有OpenCV2和OpenCV3两个大版本,OpenCV3提供了更多功能和方便的特性,但是考虑到与深度学习框架的兼容性和安装的难度,我们推荐先使用OpenCV2进行学习和应用。为了更方便地安装OpenCV-Python,您可以使用以下命令:"pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple"。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [OpenCV-python安装教程](https://blog.csdn.net/qq_41627235/article/details/87692748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【基础知识】4、python-opencv 超详细介绍](https://blog.csdn.net/jiaoyangwm/article/details/79961778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值