“ OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。~~~


作者丨徐恩伟


ruby处理excel ruby处理图像中添加文字_c++ 绘制函数图像

一、为什么使用OpenCV

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

虽然python 很强大,而且也有自己的图像处理库PIL,但是相对于OpenCV 来讲,它还是弱小很多。跟很多开源软件一样OpenCV 也提供了完善的python 接口,非常便于调用。OpenCV 的稳定版是2.4.8,最新版是3.0,包含了超过2500 个算法和函数,几乎任何一个能想到的成熟算法都可以通过调用OpenCV 的函数来实现,超级方便。

OpenCv作为Python的扩展库,需要先安装再导入进行使用,使用方法“cv.xxx"的格式进行使用,下面重点介绍如何使用OpenCv扩展库进行图像处理的一些基本操作。

二、需要的工具

1. python3.8环境

2. cv2 库

  打开cmd命令行,通过命令“pip install cv2” 进行安装

三、OpenCv几个常用的操作
(1)读取文件夹里的照片
# 两个参数(路径,flag),路径即为照片的位置,flag值0为单通道(灰色)、值1为RGB三通道(彩色)img = cv2.imread("../face_recognise/img/10.jpg",flags=1)
(2)截取视频或摄像头的照片
cap = cv2.VideoCapture(0)ret,img = cap.read()cap.release()

'''''

VideoCapture()中参数是0,表示打开笔记本的内置摄像头,1是外置摄像头,若为视频文件路径则打开相应路径中的视频,如cap= cv2.VideoCapture("../testi.mp4")

cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾或没有读到图像,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵(RGB)。

cap.release()是关闭摄像头或关闭当前视频

''''''

(3)显示照片
#两个参数,第一个参数是窗口的名字,第二个是我们的图像的名字,窗口会自动调整为图像大小。cv2.imshow('image',img)cv2.waitKey(0)  cv2.destroyAllWindows()

"""

cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。如果按下任意键,这个函数会返回按键的ASCII 码值,程序将会继续运行。如果没有键盘输入,返回值为-1,如果我们设置这个函数的参数为0,那它将会无限期的等待键盘输入。如果没有waitkey(),则照片会不停的刷新,以致于我们看不到照片。cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。

"""

(4)保存照片
#两个参数,第一个是路径及名字,第二个是保存的照片cv2.imwrite("../face_recognise/img/100.jpg",img)
(5)翻转照片
#两个参数,第一个是反转的照片,第二个是翻转的效果cv2.flip(img,0)

‘’‘’‘’

使用函数cv2.flip(img,flipcode)翻转图像,flipcode控制翻转效果。

flipcode = 0:沿x轴翻转

flipcode > 0:沿y轴翻转

flipcode < 0:x,y轴同时翻转

‘’‘’‘’

(6)输出文字
cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3)

''''''

各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细

其中字体可以选择

FONT_HERSHEY_SIMPLEX

''''''

(7)绘制矩形标记
cv2.rectangle(img, (bbox.left, bbox.top), (bbox.right, bbox.bottom), color[, thickness[, lineType[, shift]]])
作用
  • 根据给定的坐标画矩形
参数说明
  • img:输入的图片data
  • (bbox.left, bbox.top):是一个坐标,起始点坐标
  • r(bbox.right, bbox.bottom):是一个坐标,终点坐标
  • color:颜色
  • thickness:线条的粗细(
  • lineType:矩形的类型。
  • shift:小数位数。
(8)绘制圆形标记
cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])
作用
  • 根据给定的圆心和半径等画圆
参数说明
  • img:输入的图片data
  • center:圆心位置,是一个坐标
  • radius:圆的半径,若半径非常小,相当于画点
  • color:圆的颜色
  • thickness:圆形轮廓的粗细(如果为正)。负厚度表示要绘制实心圆。
  • lineType:圆边界的类型。
  • shift:中心坐标和半径值中的小数位数。
四、举个例子
import cv2img = cv2.imread('a.jpg') #没有路径即直接读取的是和当前文件在同一文件夹下cv2.imshow('image',img)# Wait for keys to exit or save,ASCII=27即按键Esc,ord("S")即按键S的ASCIIk = cv2.waitKey(0)if k == 27:                    cv2.destroyAllWindows()elif k == ord('s'):            cv2.imwrite('save_image.jpg', img)cv2.destroyAllWindows()

ruby处理excel ruby处理图像中添加文字_c++绘制函数图像_02



微信编辑:徐恩伟