cv2.imwrite使用误区

cv2.imwrite使用误区

关于cv2.imwrite的作用就是将图片保存到指定路径,例如:

cv2.imwrite('C:/Users/zm/Desktop/test/one.png' , img)

但是需要注意的是imwrite中的路径只能是英文而不能包含中文!我调试的一个代码刚开始一直保存不成功还以为是代码的问题,但是也不会报错。

因此建议使用cv2.imencode,中英文路径都支持

cv2.imencode('.png', img)[1].tofile('C:/Users/zm/Desktop/一亿/one.png')
  #png还可换为ipg

示例:调用电脑摄像头保存截图,5s后再次保存

import time
import threading
from datetime import datetime
import cv2

def f1(a1, a2):
    print('1')
    camera = cv2.VideoCapture(0)  # 打开摄像头
    success, img = camera.read()

    dt = datetime.now()  # 对疑似动物图片进行命名与保存
    savepath = 'activsave(' + str(dt.year) + '-' + str(dt.month) + '-' + str(dt.day) + '-' + str(
        dt.hour) + '-' + str(dt.minute) + '-' + str(dt.second) + '-' + str(
        dt.microsecond) + ').png'  # 图片名字
    print(savepath)
    #cv2.imwrite('C:/Users/zm/Desktop/一亿' + '/' + savepath, img)
    cv2.imencode('.png', img)[1].tofile('C:/Users/zm/Desktop/一亿' + '/' + savepath)

    time.sleep(5)
    dt = datetime.now()
    success, img1 = camera.read()
    savepath = 'activsave(' + str(dt.year) + '-' + str(dt.month) + '-' + str(dt.day) + '-' + str(
        dt.hour) + '-' + str(dt.minute) + '-' + str(dt.second) + '-' + str(
        dt.microsecond) + ').png'  # 图片名字
    print(savepath)
    #cv2.imwrite('C:/Users/zm/Desktop/一亿' + '/' + savepath, img1)
    cv2.imencode('.png', img1)[1].tofile('C:/Users/zm/Desktop/一亿' + '/' + savepath)



t = threading.Thread(target=f1, args=(1,2))  # 创建线程
#t.setDaemon(True)  # 设置为后台线程,这里默认是False,设置为True之后则主线程不用等待子线程,
t.start()  # 开启线程

你可能感兴趣的:(cv2.imwrite使用误区)