how to specify diffferent color in a loop in script
how to specify diffferent color in a loop in script
Hi ,
I am using imagemagick on 64bit ubuntu OS
$ convert -version
Version: ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules OpenMP
Delegates: bzlib cairo djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png rsvg tiff wmf x xml zlib
I am drawing circles in a script using convert.
I want to choose a different color every time (no white , no black)
Is there a way to change different color by incrementing a number so that I can use variable value in loop.
It would be nice to have colors that are very different from each other visually.
I can say that maximum 50 different colors are needed.
Thanks.
I am using imagemagick on 64bit ubuntu OS
$ convert -version
Version: ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules OpenMP
Delegates: bzlib cairo djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png rsvg tiff wmf x xml zlib
I am drawing circles in a script using convert.
I want to choose a different color every time (no white , no black)
Is there a way to change different color by incrementing a number so that I can use variable value in loop.
It would be nice to have colors that are very different from each other visually.
I can say that maximum 50 different colors are needed.
Thanks.
-
- Posts: 12159
- Joined: 2010-01-23T23:01:33-07:00
- Authentication code: 1151
- Location: England, UK
Re: how to specify diffferent color in a loop in script
I suggest you show the script you have so far.manit wrote:I am drawing circles in a script using convert.
There are many ways of creating different colours. You might use a simple gradient. Or you could use colours of pixels in a pre-generated 50x1 pixel image.
snibgo's IM pages: im.snibgo.com
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: how to specify diffferent color in a loop in script
Specify colors as HSB and vary the H (in the range 0-360). This gives a 100x100 swatch. The results are rgb colors, but the colors are specified as HSB at full saturation and full brightness. You can also change the brightness and saturation values if you want.
see https://imagemagick.org/script/color.php
Code: Select all
convert -size 100x100 xc:"hsb(0,255,255)" red.jpg
convert -size 100x100 xc:"hsb(120,255,255)" green.jpg
convert -size 100x100 xc:"hsb(240,255,255)" blue.jpg
Re: how to specify diffferent color in a loop in script
sorry , wasn't online for long time.
I will try different values of h .
Then I will show the script , it draws circles after getting location from text file.
I will try different values of h .
Then I will show the script , it draws circles after getting location from text file.
Re: how to specify diffferent color in a loop in script
hi,
here is my python script
It takes png image file as first input and text file as second input.
Text file has x,y coordinate of requires points relative to bottom left corner.
So I am recalculating y coordinate for imagemagick as it considers origin at top left corner . (Is there some way to tell im to consider origin at bottom left ?)
I tried range of hue values from 0 to 240 but colors looked similiar .
Here is an example with text of 20 points and white image of 388x374 dimension.
Text (our script will consider first 2 numbers in each line only)
Resultant image - https://i.postimg.cc/sDZKZt2L/bkup-blank-image.png
here is my python script
Code: Select all
import cv2
import numpy as np
import sys
import os
import subprocess
src_img = cv2.imread(sys.argv[1])
height,width,channel=src_img.shape
file_name_without_ext=sys.argv[1].split('/')[-1].replace('.png','')
xyt_file=sys.argv[2]
cat_xyt_wc = 'cat '+xyt_file+' | wc -l'
lines_in_xyt = subprocess.check_output(cat_xyt_wc, shell=True)
lines_in_xyt=lines_in_xyt.strip('\n')
print('number of points:',lines_in_xyt)
with open(xyt_file) as f:
lines = f.readlines()
bkup_img='bkup_'+file_name_without_ext+'.png'
os.system('cp '+sys.argv[1]+' '+bkup_img)
hue_increment=240/int(lines_in_xyt)
hue_this_time=0
for i in range(len(lines)):
x_coord=lines[i].split(' ')[0]
y_coord=lines[i].split(' ')[1]
y_coord=str(height-int(y_coord)-1)
periphery=str(int(y_coord)+5)
os.system('convert '+bkup_img+' -fill none -strokewidth 2 -stroke "hsb('+str(hue_this_time)+',255,255)" -draw "circle '+x_coord+','+y_coord+' '+x_coord+','+periphery+'"'+' '+bkup_img)
print('convert '+bkup_img+' -fill none -strokewidth 2 -stroke "hsb('+str(hue_this_time)+',255,255)" -draw "circle '+x_coord+','+y_coord+' '+x_coord+','+periphery+'"'+' '+bkup_img)
hue_this_time=hue_this_time+hue_increment
print 'minutiae highlighted file is '+bkup_img
os.system('eog '+bkup_img)
Text file has x,y coordinate of requires points relative to bottom left corner.
So I am recalculating y coordinate for imagemagick as it considers origin at top left corner . (Is there some way to tell im to consider origin at bottom left ?)
I tried range of hue values from 0 to 240 but colors looked similiar .
Here is an example with text of 20 points and white image of 388x374 dimension.
Text (our script will consider first 2 numbers in each line only)
Code: Select all
147 313 18 8
147 134 39 5
150 185 45 12
151 158 46 8
162 242 97 5
169 140 44 10
173 288 90 7
175 248 98 17
184 126 79 8
189 326 83 11
195 196 97 5
212 330 80 13
216 206 97 9
217 21 13 8
227 155 87 6
237 45 61 7
245 294 85 9
258 203 84 6
282 163 81 9
297 284 37 9
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: how to specify diffferent color in a loop in script
Not that I am aware. But you can flip the image vertically, then process, then flip vertically again.(Is there some way to tell im to consider origin at bottom left ?)
Re: how to specify diffferent color in a loop in script
ok .
That can work .
But main question remains that changing hue value results in similiar colors when saturation and brightness are fixed .
see https://i.postimg.cc/sDZKZt2L/bkup-blank-image.png .
-
- Posts: 12159
- Joined: 2010-01-23T23:01:33-07:00
- Authentication code: 1151
- Location: England, UK
Re: how to specify diffferent color in a loop in script
So, also vary the saturation and brightness. For example:manit wrote:But main question remains that changing hue value results in similiar colors when saturation and brightness are fixed .
Code: Select all
magick hald:8 -posterize 4 -unique-colors txt:
snibgo's IM pages: im.snibgo.com
Re: how to specify diffferent color in a loop in script
I am using imagemagick on 64bit ubuntu OS
$ convert -version
Version: ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules OpenMP
Delegates: bzlib cairo djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png rsvg tiff wmf x xml zlib
There is no magick command here .
Also , does your command give a text output or an image with 64 colors ?
$ convert -version
Version: ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules OpenMP
Delegates: bzlib cairo djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png rsvg tiff wmf x xml zlib
There is no magick command here .
Also , does your command give a text output or an image with 64 colors ?
-
- Posts: 12159
- Joined: 2010-01-23T23:01:33-07:00
- Authentication code: 1151
- Location: England, UK
Re: how to specify diffferent color in a loop in script
For IM v6, use "convert" instead of "magick".
The command I showed makes a text output. For an image file, change "txt:" to "out.png" or whatever you want.
The command I showed makes a text output. For an image file, change "txt:" to "out.png" or whatever you want.
snibgo's IM pages: im.snibgo.com
Re: how to specify diffferent color in a loop in script
yeah.
that works.
I got an image with 1 pixel colors stacked horizontally .
Thanks snibgo .
that works.
I got an image with 1 pixel colors stacked horizontally .
Thanks snibgo .