001_LearnOpenCV_基本操作

v0.0.1 2019/9/13 DSLMing
首次创作

感谢:
http://ex2tron.wang/opencv-python-introduction-and-installation/

准备工作

1、安装环境

首先安装python, 然后安装依赖,本教程编写时使用的软件版本是:OpenCV 4.x,Python 3.x。

pip3 install opencv-python
pip3 install numpy
2、编码规范

最常用的依赖引入方式为:

# -*- coding: utf-8 -*-
import cv2 as cv
import numpy as np

命名规范:

# 函数/方法: 小驼峰
findTransform()
# 变量: 下划线连接小写字母
binary_image = cv.imread("./test.png")
3、图片的读写

读:

# filename: 文件名
# flags:
# - cv.IMREAD_COLOR:彩色图,默认值(1)
# - cv.IMREAD_GRAYSCALE:灰度图(0)
# - cv.IMREAD_UNCHANGED:包含透明通道的彩色图(-1)
cv.imread(filename, flags)

显示:

# winname: 窗口名
# mat: 图片数据
cv.imshow(winname, mat)
cv.waitKey(0)

但是程序显示一闪而过,需要停留下来,所以:

# 等待, 0表示一直等
cv2.waitKey(0)
# 销毁所有的窗口
cv2.destroyAllWindows()

保存:

cv2.imwrite(filename, img)
4、图片属性

img.shape获取图像的形状,图片是彩色的话,返回一个包含行数(高度)、列数(宽度)和通道数的元组,灰度图只返回行数和列数:

# img 是彩色图
height, width, channels = img.shape
# img是灰度图
height, width = img.shape
5、获取和修改像素点值

通过行列的坐标来获取某像素点的值,对于彩色图,结果是B,G,R三个值的列表,对于灰度图或单通道图,只有一个值:

# 彩色,第100行,90列的像素值
px = img[100, 90]
print(px)  # [103 98 197], BGR
# blue通道
px_blue = img[100, 90, 0]
print(px_blue)  # 103

修改像素值,img[y, x]:

img[100, 90] = [255, 255, 255]
print(img[100, 90])  # [255 255 255]
5、性能评估

评估代码运行时间:

import cv2 as cv
start = cv.getTickCount()
# 这里写测试代码...
count = 0.1
for i in range(1000):
    count = count * 0.9
end = cv.getTickCount()
print((end - start) / cv.getTickFrequency(), 's')

优化原则:

  • 尽量避免使用循环,尤其嵌套循环,因为极其慢!!!
  • 优先使用OpenCV/Numpy中封装好的函数
  • 尽量将数据向量化,变成Numpy的数据格式
  • 尽量避免数组的复制操作

全文结束

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值