Python Opencv中基础的知识点
作者:Keep_Trying_Go 发布时间:2023-06-08 21:10:48
标签:Python,Opencv,基础知识
OpenCV 是一个流行的开源计算机视觉库,可用于不同的编程语言,例如 Python、C++ 和 JavaScript。它提供了一套丰富的工具来处理和分析图像和视频,让你可以从调整单张图片的大小到构建复杂的对象识别应用程序。
本文给大家介绍Python Opencv中基础的知识点。
1.创建窗口
import cv2
import numpy as np
def createWindow():
#读取图片
img=cv2.imread('images/1 (1).jpg')
#创建窗口 flags=WINDOW_NORMAL表示可以改变窗口大小
cv2.namedWindow(winname='window',flags=cv2.WINDOW_NORMAL)
#缩放窗口的大小
cv2.resizeWindow(winname='window',width=300,height=200)
#显示窗口
cv2.imshow('window',img)
#获取鼠标或者键值
key=cv2.waitKey(0)
if (key&0XFF==ord('Q')):
cv2.destroyAllWindows()
#销毁所有的窗口
if __name__ == '__main__':
print('PyCharm')
createWindow()
2.保存图片
import cv2
import numpy as np
def createWindow():
#读取图片
img=cv2.imread('images/1 (1).jpg')
#创建窗口 flags=WINDOW_NORMAL表示可以改变窗口大小
cv2.namedWindow(winname='window',flags=cv2.WINDOW_NORMAL)
#缩放窗口的大小
cv2.resizeWindow(winname='window',width=300,height=200)
while True:
#显示窗口
cv2.imshow('window',img)
#获取鼠标或者键值
key=cv2.waitKey(0)
if (key&0XFF==ord('Q')):
break
elif (key&0xFF==ord('s')):
# 保存图片
# name-保存的文件名 img-保存的图片
cv2.imwrite('save_pic.png', img)
break
cv2.destroyAllWindows()
#销毁所有的窗口
if __name__ == '__main__':
print('PyCharm')
createWindow()
3.采集视频
import os
import cv2
import numpy as np
def CollectVideo():
#创建窗口
cv2.namedWindow(winname='window',flags=cv2.WINDOW_AUTOSIZE)
cv2.resizeWindow(winname='window',width=450,height=300)
#打开摄像头
cap=cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
#获取窗口大小
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# 输出文件 多媒体文件格式 视频帧率 分辨率大小
vw = cv2.VideoWriter('video.avi', fourcc, 25, size)
while cap.isOpened():
#从摄像头读取视频帧
OK,frame=cap.read()
if OK:
#显示摄像头画面
cv2.imshow('window',frame)
cv2.resizeWindow(winname='window', width=450, height=300)
#将从摄像头采集的视频帧写入文件
vw.write(frame)
#从鼠标和键盘获取键值,按下ESC键退出
if cv2.waitKey(1)&0xFF==27:
break
#释放资源
cap.release()
vw.release()
#销毁所有的窗口
cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')
CollectVideo()
4.鼠标控制
#回调函数参数解释
#event:鼠标移动,按下左键;
#(x,y):鼠标坐标
#flags:鼠标键及组合键
import cv2
import numpy as np
#回调函数定义
def mouse_callback(event,x,y,flags,userdata):
print(event,x,y,flags,userdata)
#创建窗口
cv2.namedWindow(winname='mouse',flags=cv2.WINDOW_NORMAL)
cv2.resizeWindow(winname='mouse',width=450,height=300)
#给“mouse”窗口设置回调函数
cv2.setMouseCallback('mouse',mouse_callback,'123')
img=np.zeros(shape=(300,450,3),dtype=np.uint8)
while True:
cv2.imshow('mouse',img)
#按下ESC键退出
if cv2.waitKey(1)&0xFF==27:
break
cv2.destroyAllWindows()
if __name__ == '__main__':
print('pycharm')
5.TrackBar组件
import os
import cv2
import numpy as np
cv2.namedWindow(winname='trackbar',flags=cv2.WINDOW_NORMAL)
cv2.resizeWindow(winname='trackbar',width=450,height=300)
#获取TrackBar的值
def TrackBarValue():
#获取窗口“window”下子窗口“R”的值
value_R= cv2.getTrackbarPos(trackbarname='R', winname='trackbar')
value_G = cv2.getTrackbarPos(trackbarname='G', winname='trackbar')
value_B = cv2.getTrackbarPos(trackbarname='B', winname='trackbar')
return value_R,value_G,value_B
def callback():
pass
#定义TrackBar函数
def TrackBarBGR():
#value-trackbar的值 count-设置的最大值count(最小值为0) OnChange-回调函数
cv2.createTrackbar('R','trackbar', 0, 255, callback)
cv2.createTrackbar('G','trackbar', 0, 255, callback)
cv2.createTrackbar('B','trackbar', 0, 255, callback)
img=np.zeros(shape=(450,300,3),dtype=np.uint8)
#创建trackbar组件
TrackBarBGR()
while True:
#获取trackbar的值
R,G,B=TrackBarValue()
img[:]=[B,G,R]
#获取值之后改变背景的颜色
cv2.imshow('trackbar', img)
#按下ESC键退出
if cv2.waitKey(1)&0xFF==27:
break
cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')
来源:https://blog.csdn.net/Keep_Trying_Go/article/details/125351256


猜你喜欢
- 今天安装了几个模块,在cmd测试都正常,但是在pycharm就不行,后面试了以下方法:1、2、3、选择python.exe4、然后在回到se
- 我不知道没有他们我该如何生活我编写Python已有5年以上了,我的工具集通常变得越来越小,而不是越来越大。 许多工具不是必需的或无用的,而其
- 作用域链(Scope Chain)JavaScript中的一种重要机制,JS中所有的标识符(Identifier)都是通过Scope Cha
- BootStrap模态框简单概述Bootstrap Modals(模态框)是使用定制的 Jquery 插件创建的。它可以用来创建模态窗口丰富
- 项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩第一种 一:安装包python -m pip ins
- 发现这个也是偶然,在测试的时候发现的,因此问题还发现一个bug。蛮有意思~ 假如输入http://www.aspxhome.com的话,在
- 前言很多时候我们要用到图片上传功能,如果图片一直用放在别的网站上,通过加载网址的方式来显示的话其实也挺麻烦的,我们通过使用 django-f
- 排名函数是SQL Server2005新加的功能。在SQL Server2005中有如下四个排名函数:1.row_number2.rank3
- 第一步:安装SQL200,并启动SQL2000。到网上下载SQL2000,并安装完毕。( * 作系统是XP,装的是SQL个人版),按照下面所示
- 下面我们以论坛排行榜举例说明:<% @ LANGUAGE="VBSCRIPT" %&
- 注意:安装时要保证Oracle安装目录不能带有中文字符(如果第一次安装出现“加载数据库错误areasQueries”的错误,一般是因为Ora
- //记一个问题(已经解决2016.5.5)//在公司项目中遇见一个添加单选项的需求,采用ajax一步请求。为节约资源添加后不刷新网页,js动
- 最近这段时间研究Node感觉不错,自己做了一个增删改查,虽然有些简陋,但是思想是想通的,其实所有项目都是增删改查,有助于初学者快速掌握Nod
- datetime64与unix时间戳互转在用pandas处理数据时,经常要处理一些时间类型数据,经常把pandas时间类型与datetime
- 最近在研究文本挖掘相关的内容,所谓巧妇难为无米之炊,要想进行文本分析,首先得到有文本吧。获取文本的方式有很多,比如从网上下载现成的文本文档,
- 本文实例讲述了JS模拟实现哈希表及应用。分享给大家供大家参考,具体如下:在算法中,尤其是有关数组的算法中,哈希表的使用可以很好的解决问题,所
- 一、环境准备1.CentOS配置最好是用新克隆的虚拟机 ,虚拟机内存设置大一点(我设置的4G),配置网络,主机名,关闭防火墙,关闭selin
- 一个小代码 类似资源管理器效果 支持鼠标拖拽 没写些细节东西 JavaScript语言:
- 客户端代码:#-*-encoding:utf-8-*-import socketimport osimport sysimport math
- 1、for循环写法基本和其他语言一致,只是没有了while循环,用for代替while。样例代码如下// for循环func loop1()