基于oepncv 将jpg转成png

基于oepncv 将jpg转成png

一,前言

在制作裸眼3D视频的时候,对Midas估计上下无意义黑色部分的区域很不满意,老是估计的一坨大便,看着就觉得用这来与跟其他公司谈合作简直了,不行得思索思索。

二,实现代码

import cv2 as cv
import numpy as np
def transPNG(srcImageName, dstImageName):
    img1=cv.imread(srcImageName)
    imggray=cv.cvtColor(img1,cv.COLOR_BGR2GRAY)
    imgStrong=cv.addWeighted(imggray,10,imggray,10,0)

    t1, imgMask = cv.threshold(imgStrong, 150, 255, cv.THRESH_BINARY+cv.THRESH_OTSU)
    kernel = np.ones((4, 4), np.uint8)
    dlilate = cv.dilate(imgMask, kernel)
    erod = cv.erode(dlilate, kernel)

    imgpng=cv.merge([img1[:,:,0],img1[:,:,1],img1[:,:,2],erod])
    cv.imwrite(dstImageName, imgpng, [int(cv.IMWRITE_PNG_COMPRESSION), 0])
    cv.namedWindow('png',0)
    cv.imshow('png',imgpng)
    cv.waitKey(0)


img1=r'D:\Backup\Documents\My Pictures\Camera Roll\77.jpeg'
outputimg=r'D:\Backup\Documents\My Pictures\Camera Roll\771`.png'
transPNG(img1,outputimg)

三,程序效果

下面是转化后的png图, 用其转化后的深度估计效果也嘎嘎好了一些

在这里插入图片描述
将黑色深的地方透明度变为0,浅的不变,形成一个抠图的效果。如果原图中有黑夜,不想附带抠图的一点效果,只是单纯的转化的话:
可以将
imgpng=cv.merge([img1[:,:,0],img1[:,:,1],img1[:,:,2],imgMask])
修改为
imgpng=cv.merge([img1[:,:,0],img1[:,:,1],img1[:,:,2]])
运行即可

猜你喜欢

转载自blog.csdn.net/qq_51116518/article/details/131028187
今日推荐