OpenCV (一)基于Python
发布日期:2021-05-04 20:59:04 浏览次数:14 分类:原创文章

本文共 2738 字,大约阅读时间需要 9 分钟。

文章目录


安装版本尽量选择 3.4.1 .15,因为3.4.2有一些功能已经申请了专利了。没办法免费用了。

一.安装opencv

pip install opencv-pythonpip install opencv-contib-python # 这个是相当于扩展包

二.图像的基本操作

2.1原理

0-255 表示像素点的亮度:,RGB 三个通道上的值,表示的是三个通道的亮度。灰度图是一个通道
在这里插入图片描述
如果一个彩色图像的大小是 500 *500 , 那么他就表示为 【500,500,3】

2.2读取和保存图片代码

import cv2 #读取bgr 的格式的图import matplotlib.pyplot as pltimport numpy as np#读取图像信息img=cv2.imread('./material/a.jpg')#可以打印出来瞧瞧,看是什么样的形状print(img)print(img.shape)# 输出结果是(300, 530, 3)# 表示的是 h w c ,只不过他不是 RGB,而是BGR# 展示图像信息cv2.imshow("自己指定的名字",img)cv2.waitKey(0) # 表示等待时间是由自己确定的# 已毫秒为单位cv2.destroyAllWindows() #按电脑上任意键消失#可以自定义一个方法,用来显示图片def  cv_show(name,img):    cv2.imshow(name,img)    cv2.waitKey(0)    cv2.destroyAllWindows()## 直接读取灰度图img=cv2.imread('./material/a.jpg',cv2.IMREAD_GRAYSCALE)print('**********')print(img.shape)cv2.imshow("自己指定的名字",img)cv2.waitKey(0)# 输出的结果(300, 530)# 保存图像cv2.imwrite('./material/test01.jpg',img)



三.视频的基本操作

1.原理

其实视频也是读进去的一张张的图片,对张图片进行处理,到最后的结果就是展示出来的,对整个视频的处理


2.视频读取和展示的代码

import cv2 #读取bgr 的格式的图import matplotlib.pyplot as pltimport numpy as np# cv2.VideoCapture 可以捕获摄像头,用数字来控制不同的设备。例如0.1.# 如果是 视频文件的话,直接指定好路径就好了# 读取视频vc=cv2.VideoCapture('./material/video/a.mp4')#检查是否打开正确if vc.isOpened():    open,frame=vc.read()# open是 bool 值,如果有就是true#frame 相当于就是读进来的一张图片else:    open=False##读进来并且放出来while open:    ret,frame=vc.read()    if frame is None: #读到头了        break    if ret==True:        gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)# 转成黑白图        cv2.imshow('result',gray)        if cv2.waitKey(10) & 0xFF==27:            breakvc.release()cv2.destroyAllWindows()



四.其他基本操作


1.截图(感兴趣的区域)

# 截取图像,感兴趣区域img=cv2.imread('./material/image/b.jpg')print(img.shape)# 输出:(312, 500, 3)cat=img[0:200,0:380]cv_show('cat',cat)

效果图:就剩下原来的一半了:


在这里插入图片描述


2.边界填充

在特征提取的环节一般需要,比如是在一些卷积操作中。

import cv2import matplotlib.pyplot as pltimg=cv2.imread('./material/image/b.jpg')# 上下左右要填充的尺寸top_size,bottom_size,left_size,right_size=(500,500,50,50)# 填充,最后指定填充的方法replicate=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)# 行数、列数和索引值,plt.subplot(121),plt.imshow(img,'gray'),plt.title('ORIGINAL')plt.subplot(122),plt.imshow(replicate,'gray'),plt.title('REPLICATE')#展示出来plt.show()

效果图:

在这里插入图片描述

各种填充方法的区别:
最后使用参数填充的时候,要指定填充的值,一般是像素的值。


在这里插入图片描述


3.改变形状

1.代码

import cv2import matplotlib.pyplot as pltimg=cv2.imread('./material/image/b.jpg')# 查看形状print(img.shape)#(312,500,3)# 行数、列数和索引值,replicate=cv2.resize(img,(300,100))# 按照比例改变形状res1=cv2.resize(img,(0,0),fx=2,fy=4)res2=cv2.resize(img,(0,0),fx=4,fy=2)plt.subplot(221),plt.imshow(img,'gray'),plt.title('aa')plt.subplot(222),plt.imshow(replicate,'gray'),plt.title('REPLICATE')plt.subplot(223),plt.imshow(res1,'gray'),plt.title('REPLICATE')plt.subplot(224),plt.imshow(res2,'gray'),plt.title('REPLICATE')#展示出来plt.show()

效果图:
在这里插入图片描述

上一篇:OpenCV(二)基于python
下一篇:数据库 の mysql(二)基本操作

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年03月24日 09时25分56秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

P5854 【模板】笛卡尔树 2019-03-04
SpringMVC的基础配置之注解驱动 2019-03-04
在Ubuntu上安装GCC编译器 2019-03-04
Maven(高级)之聚合 2019-03-04
SecureCRT注册机 2019-03-04
菜鸟程序员,被无良HR欺骗,因祸得福,竟“意外”拿下美团offer 2019-03-04
吓我一跳?看了线程和线程池的对比,才知道池化技术到底有多牛 2019-03-04
给公司妹子讲了好久,头都大了,一个SQL语句是如何执行的? 2019-03-04
阿里大牛手撕SpringBoot,Cloud,Nginx与Docker,你凭什么搞不懂 2019-03-04
结局已定,一点不慌,秋招京东三面,给了意料之中的20KOffer。 2019-03-04
Java开发5年的我偶然被几条朋友圈打击,成功点燃,别说了,不去阿里对不起自己! 2019-03-04
凭借这份pdf,安卓顺利转行Java,成功4面拿下美团offer 2019-03-04
团体程序设计天梯赛-练习集 L1-006 连续因子 (20分) 2019-03-04
团体程序设计天梯赛-练习集 L2-007 家庭房产 (25分) 并查集思想+坑点分析 2019-03-04
暴打算法:王者级数据结构与LeetCode笔记,一路绿灯杀进字节Java岗 2019-03-04
团体程序设计天梯赛-练习集 L2-020 功夫传人 (25分) dfs深搜 2019-03-04
不愧是Alibaba技术官,随便甩出本kafka限量笔记,都火遍全网 2019-03-04
惊喜万分!全靠这份999页Java面试宝典,我刚拿到美团offer 2019-03-04
蘑菇街被裁,奋战7个月拿下字节跳动offer 2019-03-04
整合:2021年已收录GitHub的最新、最全、最实用的Java岗面试真题 2019-03-04