开发者

How to replace color of an image?

I want to repla开发者_如何学Pythonce color of an image. For example turn all blue colors to red without any distortion on shape. When i try this i can swap the colors by iterating every pixel, however the shape of the swapped area turns into a flat shape.

example1 input : http://www.tutorialwiz.com/tutorials/changing_color/images/original.jpg

example1 output: http://www.tutorialwiz.com/tutorials/changing_color/images/3.jpg

example2: input output together : http://www.digital-photography-school.com/wp-content/uploads/2009/07/before-after.jpg


The usual way to do this is to use an RGBImageFilter. See the docs for FilteredImageSource for how to use such a filter.


The problem with the issue that you are asking is that a strict color replacement will modify the shape of the image. What you need to do is get a little information on what the shape is. I.e. Find boundaries and shading along the boundaries. My suggestion to you is:

  1. Use edge detection to separate out blobs
  2. Find a blob that fits your demands: i.e. Has a tolerant likelihood for [color]ish.
  3. Identify blobs and filters applied
  4. Recolor the blob and reshade.

IMO: That is the only way you're going to get the result you're looking for.

Some notes: Finding a blob may require some testing to determine how much tolerance you have for blobs and shapes. [Connected Regions].

Another thing: The shading and relative coloring will require you to have a devience for the color you want.


I'm not fully understand the question. But from the example given, i see that the process of changing blue into red was fail. instead of becoming red, it becomes gray. does color gray is what you mean by flat?

If that so, it looks like color channel error. to change blue to red, we have to change (0,255,0) to (255,0,0).

I'm not sure if it is the problem, maybe code snippet could help for evaluation. to make sure what is the real problem.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜