Python3 opencv操作图像

opencv对图像进行操作,因为图片有时候总是不能完全显示出来,因此我希望先对图像进行一下缩放然后再显示出来。也有时候需要让图像进行旋转,因此也写了一个函数.

1、读入视频

        rtsp协议读入海康威视摄像头的视频流,并显示出来。rtsp协议中的url写法如下:'rtsp://admin:password@ip:port//11‘其中ip是摄像头的ip,port是rtsp端口默认为554端口。参考:(https://blog.csdn.net/Zhou_yongzhe/article/details/80310537)和

#以下是最常用的读取视频流的方法
import cv2
url = 'rtsp://admin:password@192.168.1.104:554/11'
cap = cv2.VideoCapture(url)
while(cap.isOpened()):  
    # Capture frame-by-frame  
    ret, frame = cap.read()  
    # Display the resulting frame  
    cv2.imshow('frame',frame)  
    if cv2.waitKey(1) & 0xFF == ord('q'):  
        break  
# When everything done, release the capture  
cap.release()  
cv2.destroyAllWindows()  

其中函数的说明如下:

  • VideoCapture():参数为0表示调用笔记本自带摄像头,参数同样也可以为视频路径,或者网址。
  • ret,frame = cap.read():cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。
  • cv2.waitKey(1):waitKey()方法表示暂停脚本执行,等待键盘输入。参数是1,表示延时1ms切换到下一帧图像,对于视频而言;参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停;cv2.waitKey(1000),表示等待1秒。
  • release():释放摄像头。
  • destroyAllWindows():关闭所有图像窗口。

2、视频缩放

(h,w)=img.shape:图像矩阵的维数

cv2.resize(img,(w,h),)#这里维数要写成(w,h)的形式。

3、图形旋转

M = cv2.getRotationMatrix2D(center, 180, 1):图像旋转180度,center旋转的中心点,放大倍数为1倍,得到一个二维矩阵
rotated = cv2.warpAffine(image, M, (w,h)):将二维矩阵变成图像

4、图像保存

保存图像很简单,直接用cv2.imwrite即可。

对于jpg格式:

cv2.imwrite("D:\\cat2.jpg", img)

第一个参数是保存的路径及文件名,第二个是图像矩阵。其中,imwrite()有个可选的第三个参数,如下:

cv2.imwrite("D:\\cat2.jpg", img,[int(cv2.IMWRITE_JPEG_QUALITY), 5])

第三个参数针对特定的格式: 对于JPEG,其表示的是图像的质量,用0-100的整数表示,默认为95。 注意,cv2.IMWRITE_JPEG_QUALITY类型为Long,必须转换成int。下面是以不同质量存

对于PNG,第三个参数表示的是压缩级别。cv2.IMWRITE_PNG_COMPRESSION,从0到9,压缩级别越高,图像尺寸越小。默认级别为3:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值