在maya中基于C++编写OpenCV批量处理贴图工具v2

话不多说先上图,鹅大说这哪是原图,的确,此原图非彼原图,不瞎扯了,我重新又开了一篇文章区分第一版,是因为我觉得第一版的界面不太好,尤其是不能对比看图,而且每次看图要点下按钮,实在是麻烦,于是我改了界面,先上界面图。

界面原图:
image.png

现在的界面:
image.png

呃,虽然还是很丑,但是能看原图,不用点了。。
再来看图片。

lena原图:
lenna.jpg

lena效果图:
lena.jpg

MAYA工具的效果:
image.png

image.png

image.png

其他环境和版本的测试运行:

2018:
image.png

2019:
image.png

2020:
image.png

嗯,没错,多版本可以运行

这次我换了新的录屏软件,质量更高时长更多,细节丰富哈哈哈,感谢杨大给我提供的camtasia 。
首先演示的是导入图片功能,我提供了右键视窗从文件选择窗口导入,也支持拖拽导入,可以单个移除也可以全部移除和导入文件夹内的图片。

1.gif

我们将lena进行预览应用,并且调节数值,这是在高斯模糊的调节。我们可以切换输入通道比如只输入灰度图或者RGB通道全开。
这里演示的是高斯模糊,高反差保留和锐化效果。虽然视频加速了但是肉眼可见速度和ps里可以说是相差无几。
2.gif

这里我们用调好的效果对每个图片进行预览,也可以单独打开查看原图大小的窗口。如果效果不错,我们可以右键单独保存,多张保存,全部保存。
3.gif

以下都是我个人观点,如果有什么问题多多指教!
上一篇文章我讲了高斯滤波的基本原理和c++的函数,还有很简略的过程,这次我们直接上代码解析。
当然在此之前我给出我在网上查到的两种种高反差保留算法
1:r=(pix[x,y]-avg(R))/128
pix[x,y]r+128(1-r)
2:r = (pix[x,y]-avg(R))
dst[x,y] = 128 + |r| * r/(2*R)
其中第2种和第3种,是需要一定的数学运算能力才能理解,并且没有用到GaussianBlur是需要自己造轮子的。
我们就先以简单的开始,我们就用OpenCV中的GaussianBlur API函数进行运用,首先我们在python中理清思路,我们根据函数参数,需要原图,输出图,sizeX和sizeY,偏移offsetX,offsetY。
那么我们可以这样写

import cv2

# import source image
img = cv2.imread(r"H:\picture\lenna.jpg")
# convert to gaussian blur
gblur_img = cv2.GaussianBlur(img, (5, 5))
# show image
cv2.imshow("gaussian blur", gblur_img)
# keep window
cv2.waitKey(0)
cv2.destroyAllWindows()

很简单的逻辑,我们就可以得到一张高斯模糊后的图片。
那么我们怎么得到一张高反差保留的图呢,上一章我解释过高反差保留 = 原图 - 高斯滤波图
我们转换成python代码可以这样写。

import cv2

# import source image
img = cv2.imread(r"H:\picture\lenna.jpg")
# convert to gaussian blur
gblur_img = cv2.GaussianBlur(img, (5, 5))
# get high pass image
highpass_img = img  - gblur_img 
# show image
cv2.imshow("highpass", highpass_img)
# keep window
cv2.waitKey(0)
cv2.destroyAllWindows()

是不是觉得很简单。我们在python中就实现了高反差保留效果。
我会日后将具体介绍在C中的写法。。

你可能感兴趣的:(在maya中基于C++编写OpenCV批量处理贴图工具v2)