在 OpenCV 中将图像转换为彩色铅笔素描
Posted
技术标签:
【中文标题】在 OpenCV 中将图像转换为彩色铅笔素描【英文标题】:convert an image into color pencil sketch in OpenCV 【发布时间】:2012-05-15 06:22:32 【问题描述】:我想使用 OpenCV 将图像转换为彩色铅笔素描。我已经阅读了页面I want to convert an image into pencil sketch in OpenCV .我寻求的效果就像http://www.showandtell-graphics.com/photosketch.html 我通过代码使用了颜色闪避
b_d = (b_2==255? 255: min(255, b_1*255 /(255- b_2)));
g_d = (g_2==255? 255: min(255, g_1 *255/(255- g_2)));
r_d = (r_2 ==255? 255: min(255, r_1 *255/(255- r_2)));
看起来效果不太好。 请帮忙。
【问题讨论】:
【参考方案1】:整个过程在你给我们的链接中有详细说明,所以你需要3张图片来达到这个效果。
复制原始图像并将其转换为grayscale。
复制灰度图像和invert此图像。
此时,image#1为原图,image#2为灰度图,image#3为倒置图。
然后,将 color dodge 应用到图像 #3(使其变为白色)和 execute the blur。仅此一项即可为您提供灰度铅笔素描效果。
如果您希望对最终结果进行着色,则必须将blend 图像#3 与图像#1。
寻找有关混合的信息?检查this、this 和this。
【讨论】:
你的意思是:1.cvCvtColor(source_img, gray_img, CV_BGR2GRAY);2.cvNot(gray_img, imgtemp); 3.像color_dodge(dst_img, gray_img, imgtemp)一样执行闪避; 4.cvSmooth(dst_img,result_img,CV_GAUSSIAN)??????如何解决这些图像之间的通道问题?我的意思是灰色的通道是1 @karlphillip : 这是什么闪避操作,数学上(灰度图像和彩色图像) @karlphillip - 我没有使用openCV,但可以应用于常规java代码吗?我对颜色闪避感到困惑。您使用哪两个图像进行颜色减淡?是图像#2 和图像#3 吗?如果我使用那些我得到全白没有图像? @NoviceMe 颜色减淡混合模式将底层除以反转顶层](en.wikipedia.org/wiki/Blend_modes#Dodge_and_burn)。根据original link,分别是:彩色图像和倒置图像。 这变得不如在play.google.com/store/apps/…中显示。我正是想要这种类型的草图。所以请帮助我以上是关于在 OpenCV 中将图像转换为彩色铅笔素描的主要内容,如果未能解决你的问题,请参考以下文章