小白学opencv python(一)

  1. 环境的配置和模块的导入
  2. 读取图像和显示图像
  3. 视频的读取
  4. 对图片进行操作

环境的配置和模块的导入

我使用的ide是pycharm,原因是自动补全功能和debug功能。在打代码之前要安装两个必要的python模块opencv-python(基本环境)和opencv-contrib-python模块(额外拓展包)
直接在cmd安装pip install opencv-python,pip install opencv-contrib-python这样装得到的是最新的版本号,也可以装特定的版本

读取图像和显示图像

先导入模块import cv2
读取图片img=cv2.imread("文件路径",读取格式)

其中读取格式有cv2.IMREAD_COLOR和cv2.IMREAD_GRAYSCALE两种,分别代表彩色和灰度图像

创建窗口:1,可以直接创建

cv2.namedWindow("窗口名",窗口大小)

2,可以在显示图片中创建

cv2.imshow("窗口名”,文件变量)

图片逗留时间

cv2.waitKey(0)

当括号内为零时,任意键退出。当为其他数字时,为图片逗留时间,以毫秒计算

退出窗口

cv2.destroyAllWindows()

括号没内容时,可以删除任何我们建立的窗口。也可以在括号内输入我们想删除的窗口名

图片的保存

cv2.imwrite("文件名“,图片变量”)

图片常见信息的读取
文件的大小和通道数文件名.shape
图片类型文件名.dtype

视频的读取

视频的读取实际上时对视频中没一帧的图片进行读取,所以在读取到每一帧的图片后,操作和图片的操作一样的了
读取视频

vc = cv2.VideoCapture('文件路径或设备名')

括号为0为电脑摄像头,为其他的我没试过
然后要检查是否成功获得视频
vc.isOpen()返回布尔值
判断返回值

if vc.isOpen():
	open,frame=vc.read()
else:
	open=Flase

vc.read()获得第一帧的数据,一个数据是布尔值,一个是获得每一帧的图片

通过循环获得每一帧的图像

while open:
	ret,frame=vc.read()
	if frame==None:
		break
	if ret==Ture:
		gray=cv2.cvtColor(文件,要更换的效果)#图像效果变换
		cv2.imshow('窗口’,文件变量名)
		if cv2.waitKey(10)&0xFF==27:
			break
	vc.release()
	cv2.destroyAllWindws()

因为是视频播放,所以要设定Esc退出,vc.release()不懂这句意思,猜是释放缓存的意思。视频的保存为vc.VideoWrite('文件名‘,文件变量名,编码格式,帧数,大小,色度)

图片的截取

利用切片的方式

img=cv2.imread('cat.jpg')
new=img[0:50,0:100]

颜色通道的提取

b,g,r=cv2.split(img)

颜色融合

img=cv2.merge((b,g,r))

边界填充

cv2.copyMakeBorder(img,top_size,botton_size,left_size,right_size,borderType=)

•BORDER_REPLICATE:复制法,也就是复制最边缘像素。
•BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb
•BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
•BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg
•BORDER_CONSTANT:常量法,常数值填充。

数值计算

img_cat2= img_cat +10 直接相加,rgb加10
(img_cat + img_cat2) >255从零开始
cv2.add(img_cat,img_cat2) >5时为255

图像融合

cv2.resize(img_dog, (500, 414))
cv2.resize(img, (0, 0), fx=4, fy=4) x轴y轴的倍数

长宽变形,因为图片相等的图片才能融合
cv2.addWeighted(img_cat, 0.4, img_dog, 0.6, 0)
0.4,0.6为权重,0为亮度值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值