相关疑难解决方法(0)

如何更改图像中的特定颜色?

我的问题是,如果我有狮子图像,我只想改变狮子的颜色而不是背景颜色.为此,我提到了这个问题,但它改变了整个图像的颜色.此外,图像看起来不太好.我需要像photoshop那样的颜色变化.是否可以在coregraphics中执行此操作,或者我必须使用任何其他库.

编辑:我需要颜色变化像iQuikColor应用程序

在此输入图像描述

iphone core-graphics pixel image-processing objective-c

39
推荐指数
3
解决办法
1万
查看次数

用于iphone应用的图像颜色替换

基本上我想为我的涂料应用实现颜色替换功能.以下是原始和预期的输出

原版的: 原版的

更改用户选择的墙面颜色以及一些更换阈值后

期望的输出 我尝试了两种方法,但无法按预期工作

方法1:
基于队列的洪水填充算法用于颜色替换,但是我得到的输出低于非常缓慢的墙壁阴影并且没有保留.

洪水填充输出

方法2: 所以我试着看另一个选项,发现下面的帖子来自SO 如何更改图像中的特定颜色?

但我无法理解逻辑,也不确定我在第3步中的代码实现.

根据我的理解,请在每个步骤中找到以下代码.

1)使用cvCvtColor将图像从RGB转换为HSV(我们只想更改色调).

 IplImage *mainImage=[self CreateIplImageFromUIImage:[UIImage imageNamed:@"original.jpg"]];
 IplImage *hsvImage = cvCreateImage(cvGetSize(mainImage), IPL_DEPTH_8U, 3);
 IplImage *threshImage = cvCreateImage(cvGetSize(mainImage), IPL_DEPTH_8U, 3);
 cvCvtColor(mainImage,hsvImage,CV_RGB2HSV);
Run Code Online (Sandbox Code Playgroud)

2)使用cvThreshold隔离颜色,指定一定的容差(您想要一系列颜色,而不是一种颜色).

cvThreshold(hsvImage, threshImage, 0, 100, CV_THRESH_BINARY);
Run Code Online (Sandbox Code Playgroud)

3)使用blob检测库(如cvBlobsLib)丢弃低于最小大小的颜色区域.这将消除场景中相似颜色的点.我是否需要指定原始图像或背景图像?

CBlobResult blobs = CBlobResult(threshImage, NULL, 0);
blobs.Filter( blobs, B_EXCLUDE, CBlobGetArea(), B_LESS, 10);
Run Code Online (Sandbox Code Playgroud)

4)使用cvInRangeS掩盖颜色并使用生成的蒙版应用新色调.

不确定这个函数它如何帮助更换颜色并且无法理解要提供的参数.

5)cv使用新色调对新图像进行处理,图像由在第一步中保存的饱和度和亮度通道组成.

据我所知,cvMerge将合并HS和V的三个通道,但我如何使用上述三个步骤的输出.

所以基本上坚持使用opencv实现,

如果可能的话请指导我进行opencv实现或任何其他试用的解决方案.

iphone opencv core-graphics image-processing quartz-core

7
推荐指数
1
解决办法
3866
查看次数