OpenCV介绍与基础操作

OpenCV介绍

OpenCV是一款由Intel公司俄罗斯团队发起并参与和维护的一个计算机视觉处理开源软件库OpenCV-Python使用Numpy,这是一个高度优化的数据库操作库,具有MATLAB风格的语法。所有OpenCV数组结构都转换为Numpy数组。这也使得与使用Numpy的其他库(如SciPy和Matplotlib)集成更容易。

OpenCV的安装

直接安装即可

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

OPencV的基础操作

图片的读取,显示,保存: 

import numpy as np
import cv2
img1=cv2.imread("cat.jpg")
cv2.imshow("The pictuer of cat",img1)
cv2.imwrite("./img2.jpg",img1)
cv2.waitKey(0)

cv2.imread("path")       读取图片  path填图片路径

cv2.imshow("the name of img",img)    图片的展示

the name of img 填写图片的窗口名  img 填写展示的图片(需要被读取)

cv2.imwrite("path",img)  图片的保存  path填写保存的图片路径  img为保存的图片

cv2.waitkey() 窗口的延时  waitkey()括号的数值为窗口存在的毫秒数,填0则一直存在

图片中绘制图案,添加文本(非水印)

水印是将一张图片中的某个物体或者图案提取出来,然后叠加到另一张图片上,后续整理

img1=cv2.imread("cat.jpg")
cv2.line(img1,(20,20),(300,300),(255,0,0),2)
cv2.imshow("the pictuer of cat's change",img1)
cv2.waitKey(0)

img2=cv2.imread("cat.jpg")
cv2.circle(img2,(200,200),50,(255,0,0),-1)
cv2.imshow("circle img",img2)
cv2.waitKey(0)

img3=cv2.imread("cat.jpg")
cv2.rectangle(img1,(50,50,),(300,300),(255,0,0),-1)
cv2.imshow("rectangle of cat",img3)
cv2.waitKey(0)

img4=cv2.imread("cat.jpg")
cv2.putText(img4,'hello world',(0,100),cv2.FONT_ITALIC,1,(255,255,0),1,cv2.LINE_AA)
cv2.imshow("text of img",img4)
cv2.waitKey(0)

cv2.line(img,start,end,color,thickness)   图片上绘制直线 

参数设置:img为绘制的图片,start为直线的像素起始位置如(50,50)

                 end为直线 的终点位置,color为直线的颜色,thickness为线条的宽度

cv.circle(img,centerpoint, r, color, thickness)   绘制圆形

参数设置:centerpoint圆心的像素位置,r圆的半径,当thickness为-1时,绘制的封闭图案闭合

cv.rectangle(img,leftupper,rightdown,color,thickness)   绘制矩型

参数设置:leftupper矩形左上角的像素位置,rightdown矩形右下角像素位置

cv.putText(img,text,station, font, Fontscale ,color,thickness,cv2.LINE_AA)   添加文本

参数设置:text为添加的文本信息,station为文本的样式如,如果有公司自己的文本库引入即可,一般支持的有cv2.FONT_HERSHEY_SIMPLEX:标准的无衬线字体,cv2.FONT_HERSHEY_PLAIN:简单的无衬线字体,cv2.FONT_HERSHEY_DUPLEX:较粗的无衬线字体,cv2.FONT_HERSHEY_COMPLEX:有衬线字体,cv2.FONT_HERSHEY_TRIPLEX:较粗的有衬线字体

最后一个参数 cv2.LINE_AA 表示使用反走样(Anti-Aliasing)技术来绘制文本边框

获取和修改像素点以及摄像头的实时采集与渲染

img1=cv2.imread("cat.jpg")
img1[50,50]=[0,0,0]
cv2.imshow("point change",img1)
cv2.waitKey(0)

cap = cv2.VideoCapture(0)
while True:
   ret, frame = cap.read()
    if not ret:
         break
     cv2.imshow('Camera Feed', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
         break
 cap.release()
 cv2.destroyAllWindows()

获取像素点的位置并直接修改

视频流的采集与渲染注意面向功能编程

cap = cv2.VideoCapture(path) 

path视频流资源路径设置为0代表从默认摄像头捕获视频流

从默认摄像头读取图片,并且while true让它一直读取,将读取后的数组传出ret和frame两个参数,ret代表是否读取到图片,布尔值,frame代表读取的图片,如果没有读取到图片则不循环,否则展示图片,如果用户输入q或者不等待即关闭,则关闭窗口

cv2.destroyAllWindows()  关闭窗口释放内存,不是特别复杂的结构就是默认写写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值