algN/test/ffmpeg11/cv2test.py

108 lines
4.5 KiB
Python
Raw Normal View History

2025-08-23 10:12:26 +08:00
# import cv2,os
# import time
# import subprocess as sp
# # 图片合并
# # def readImage():
# # p1 = cv2.imread("C:/Users/chenyukun/Pictures/Camera Roll/a.jpg")
# # p2 = cv2.imread("C:/Users/chenyukun/Pictures/Camera Roll/b.jpg")
# # ret = cv2.add(p1, p2)
# # cv2.imwrite(r"C:\Users\chenyukun\Pictures\Camera Roll\aa.jpg", ret)
# #
# # readImage()
# # https://opencv.apachecn.org/#/docs/4.0.0/2.1-tutorial_py_image_display
# if __name__ == "__main__":
# # print(cv2.__version__)
# # # 读取图像
# # p1 = cv2.imread("C:/Users/chenyukun/Pictures/Camera Roll/a.jpg", 0) # 以灰度模式加载图像
# # p2 = cv2.imread("C:/Users/chenyukun/Pictures/Camera Roll/b.jpg", 1) # **cv.IMREAD_COLOR**:加载彩色图像,任何图像的透明度都会被忽略,它是默认标志
# # p3 = cv2.imread("C:/Users/chenyukun/Pictures/Camera Roll/b.jpg", -1) # 加载图像,包括 alpha 通道
# # p4 = cv2.imread("C:/Users/chenyukun/Pictures/Camera Roll/a.jpg")
# # p5 = cv2.imread("C:/Users/chenyukun/Pictures/Camera Roll/c.jpg")
# # print(type(p5))
# # ret = cv2.add(p4, p5)
# # # 显示图像
# # cv2.imshow('frame', p1)
# # cv2.imshow('frame1', p2)
# # cv2.imshow('frame2', p3)
# # # 对显示窗口做调整WINDOW_AUTOSIZE不可调整WINDOW_NORMAL可调整窗口大小
# # cv2.namedWindow('frame3', cv2.WINDOW_AUTOSIZE)
# # cv2.imshow('frame3', ret)
# # # 等待时间 按下任务键
# # k = cv2.waitKey(1) & 0xFF
# # if k == 27: #ESC退出
# # cv2.destroyAllWindows()
# # elif k == ord('s'): # 's' 保存退出
# # # 保存图像
# # cv2.imwrite("C:/Users/chenyukun/Pictures/Camera Roll/d.jpg", ret)
# # cv2.destroyAllWindows()
#
#
#
# # 视频入门
# try:
# cap = cv2.VideoCapture("rtmp://live.play.t-aaron.com/live/THSAf_hd") # 0表示连接一台摄像机
# print(cap.isOpened())
# print(cap)
# except Exception as e:
# print(e)
# raise e
# print("aaaa")
# # 有时cap 可能没有初始化 capture。在这种情况下此代码显示错误。你可以通过该方法 cap.isOpened() 检查它是否初始化。
# # 如果它是 True那么是好的否则用 cap.open() 打开在使用。
# fps = int(cap.get(cv2.CAP_PROP_FPS))
# width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
# height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# print(fps,width,height)
# # # 设置宽
# # print(cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320))
# # # 设置高
# # print(cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240))
#
# # 声明编码器和创建 VideoWrite 对象
# fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# out = cv2.VideoWriter('/home/DATA/dsp/ai/video/eee.mp4',fourcc, fps, (width, height))
# command=['/usr/bin/ffmpeg',
# '-y', # 覆盖输出文件
# '-f', 'rawvideo', # 强迫采用格式fmt
# '-vcodec','rawvideo',
# '-pix_fmt', 'bgr24',
# '-s', "{}x{}".format(640, 480),# 图片分辨率
# '-r', str(25.0),# 视频帧率
# '-i', '-',
# '-c:v', 'libx264',
# '-pix_fmt', 'yuv420p',
# '-preset', 'ultrafast',
# '-f', 'flv',
# "rtmp://live.push.t-aaron.com/live/THSAb"]
# # p = sp.Popen(command, stdin=sp.PIPE)
# start = time.time()
# while True:
#
# try:
# if not cap.isOpened():
# cap = cv2.VideoCapture("rtmp://live.play.t-aaron.com/live/THSAf_hd")
# continue
# # 一帧一帧捕捉
# ret, frame = cap.read() # 返回一个 bool 值(True/False)。如果加载成功它会返回True
# if not ret:
# cap = cv2.VideoCapture("rtmp://live.play.t-aaron.com/live/THSAf_hd")
# continue
# # print(ret) #True
# # # 我们对帧的操作在这里
# # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# end = time.time()
# print("bbbbbbbbb")
# # p.stdin.write(frame.tostring())
# # print("aaaaa")
# out.write(frame)
# except Exception as e:
# raise e
# # # 显示返回的每帧
# # cv2.imshow('frame',gray)
# # if cv2.waitKey(1) & 0xFF == ord('q'):
# # break
# # 当所有事完成,释放 VideoCapture 对象
# cap.release()
# out.release()
# cv2.destroyAllWindows()