【Python】图片视频处理常用操作及方法

1. 图片处理操作

⭐ 图片尺寸获取

方法一:opencv

import cv2

img = cv2.imread('my_image.jpg',0)
height, width = img.shape[:2]

⭐ 图片resize

方法一:opencv

import cv2

frame = cv2.imread('./Pictures/python.png', cv2.IMREAD_UNCHANGED)
dim = (width, height)
resized = cv2.resize(frame, dim, interpolation=cv2.INTER_AREA)

参考:https://www.cnblogs.com/lfri/p/10596530.html

⭐ 数组转化为图片

方法一:opencv,转化为 numpy 数组后通过 cv 显示

import numpy as np
import cv2 as cv
...
image = np.array(array)    # array 为普通数组
cv2.imshow('test', image)   # winname 显示图片的窗口名, mat 图片
cv2.waitKey()   # 长显示 

方法二:Pillow,转化为 Image 格式并显示

from PIL import Image

image = Image.fromarray(array)
image.show()

⭐ 图片保存

保存 cv2 打开的图片

import cv2

cv2.imwrite(output_path, img)

保存 Image 打开的图片

image.save(output_path)

⭐ 画矩形

cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) 

例如,填充一个绿色的实心矩形

cv2.rectangle(image, (left, top), (right, bottom), (0, 255, 0), -1)

参数含义

参数含义
img图片
pt1矩形的左上角
pt2矩形的右下角
color矩形框的颜色,通常使用RGB
thickness矩形框的线宽;负数或CV_FILLED表示矩形填充
lineType线的类型:8,4,CV_AA;4 连通 、8 连通、使用高斯滤波器画反锯齿线
shift

⭐ 写文本

 cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])
参数含义
img图片
text文本内容
org文字左下角在图片中的位置
font字体样式
fontFace字体格式,FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, FONT_HERSHEY_DUPLEX, FONT_HERSHEY_COMPLEX, FONT_HERSHEY_TRIPLEX, FONT_HERSHEY_COMPLEX_SMALL, FONT_HERSHEY_SCRIPT_SIMPLEX, or FONT_HERSHEY_SCRIPT_COMPLEX
lineType线的类型:8,4,CV_AA;4 连通 、8 连通、使用高斯滤波器画反锯齿线
fontScale
color字体颜色
thickness字体的线宽
lineType线的类型
bottomLeftOrigin

2. 视频处理操作

⭐ 视频信息获取

import cv2

vcap = cv2.VideoCapture('video.avi') 

if vcap.isOpened(): 
	# 获取宽、高
    video_width = int(vid.get(cv2.CAP_PROP_FRAME_WIDTH)) 
    video_height = int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT))
    # FourCC
    video_FourCC = int(vid.get(cv2.CAP_PROP_FOURCC))
    # FPS
    video_fps = vid.get(cv2.CAP_PROP_FPS)	

⭐ 视频resize及保存

def resize_video(video_path, output_path, fx=0.5, fy=0.5):
    vid = cv2.VideoCapture(video_path)
    if not vid.isOpened():
        raise IOError("Couldn't open webcam or video")

    video_width = int(vid.get(cv2.CAP_PROP_FRAME_WIDTH))
    video_height = int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT))
    video_FourCC = int(vid.get(cv2.CAP_PROP_FOURCC))
    video_fps = vid.get(cv2.CAP_PROP_FPS)
    dim = (int(video_width * fx), int(video_height * fy))
    new_video = cv2.VideoWriter(output_path, video_FourCC, video_fps, dim)

    while vid.isOpened():
        is_read, frame = vid.read()
        try:
            resized = cv2.resize(frame, dim, interpolation=cv2.INTER_NEAREST)
            new_video.write(resized)  # 保存视频最后一帧时会莫名报错,所以要使用try。
        except:
            break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

望天边星宿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值