mirror of
git://projects.qi-hardware.com/openwrt-packages.git
synced 2025-04-21 12:27:27 +03:00
rename nanonote-example files
This commit is contained in:
@@ -0,0 +1,294 @@
|
||||
--[[ $Id: x20.lua 9535 2009-02-17 10:14:04Z smekal $
|
||||
|
||||
plimage demo
|
||||
--]]
|
||||
|
||||
-- initialise Lua bindings for PLplot examples.
|
||||
dofile("plplot_examples.lua")
|
||||
|
||||
XDIM = 260
|
||||
YDIM = 220
|
||||
|
||||
dbg = 0
|
||||
nosombrero = 0
|
||||
nointeractive = 0
|
||||
f_name=""
|
||||
|
||||
|
||||
-- Transformation function
|
||||
function mypltr(x, y)
|
||||
local x0 = (stretch["xmin"] + stretch["xmax"])*0.5
|
||||
local y0 = (stretch["ymin"] + stretch["ymax"])*0.5
|
||||
local dy = (stretch["ymax"]-stretch["ymin"])*0.5
|
||||
local tx = x0 + (x0-x)*(1 - stretch["stretch"]*math.cos((y-y0)/dy*math.pi*0.5))
|
||||
local ty = y
|
||||
|
||||
return tx, ty
|
||||
end
|
||||
|
||||
|
||||
-- read image from file in binary ppm format
|
||||
function read_img(fname)
|
||||
-- naive grayscale binary ppm reading. If you know how to, improve it
|
||||
local fp = io.open(fname, "rb")
|
||||
if fp==nil then
|
||||
return 1
|
||||
end
|
||||
|
||||
-- version
|
||||
local ver = fp:read("*line")
|
||||
|
||||
if ver~="P5" then -- I only understand this!
|
||||
fp:close()
|
||||
return 1
|
||||
end
|
||||
|
||||
while fp:read(1)=="#" do
|
||||
local com = fp:read("*line")
|
||||
if com==nil then
|
||||
fp:close()
|
||||
return 1
|
||||
end
|
||||
end
|
||||
fp:seek("cur", -1)
|
||||
|
||||
local w, h, num_col = fp:read("*number", "*number", "*number")
|
||||
if w==nil or h==nil or num_col==nil then -- width, height, num colors
|
||||
fp:close()
|
||||
return 1
|
||||
end
|
||||
|
||||
-- read the rest of the line (only EOL)
|
||||
fp:read("*line")
|
||||
|
||||
local img = fp:read(w*h)
|
||||
fp:close()
|
||||
if string.len(img)~=(w*h) then
|
||||
return 1
|
||||
end
|
||||
|
||||
local imf = {}
|
||||
|
||||
for i = 1, w do
|
||||
imf[i] = {}
|
||||
for j = 1, h do
|
||||
imf[i][j] = string.byte(img, (h-j)*w+i) -- flip image up-down
|
||||
end
|
||||
end
|
||||
|
||||
return 0, imf, w, h, num_col
|
||||
end
|
||||
|
||||
|
||||
-- save plot
|
||||
function save_plot(fname)
|
||||
local cur_strm = pl.gstrm() -- get current stream
|
||||
local new_strm = pl.mkstrm() -- create a new one
|
||||
|
||||
pl.sdev("psc") -- new device type. Use a known existing driver
|
||||
pl.sfnam(fname) -- file name
|
||||
|
||||
pl.cpstrm(cur_strm, 0) -- copy old stream parameters to new stream
|
||||
pl.replot() -- do the save
|
||||
pl.end1() -- close new device
|
||||
|
||||
pl.sstrm(cur_strm) -- and return to previous one
|
||||
end
|
||||
|
||||
|
||||
-- get selection square interactively
|
||||
function get_clip(xi, xe, yi, ye)
|
||||
return 0, xi, xe, yi, ye
|
||||
end
|
||||
|
||||
|
||||
-- set gray colormap
|
||||
function gray_cmap(num_col)
|
||||
local r = { 0, 1 }
|
||||
local g = { 0, 1 }
|
||||
local b = { 0, 1 }
|
||||
local pos = { 0, 1 }
|
||||
|
||||
pl.scmap1n(num_col)
|
||||
pl.scmap1l(1, pos, r, g, b)
|
||||
end
|
||||
|
||||
|
||||
x = {}
|
||||
y = {}
|
||||
z = {}
|
||||
r = {}
|
||||
img_f = {}
|
||||
cgrid2 = {}
|
||||
|
||||
|
||||
-- Bugs in plimage():
|
||||
-- + at high magnifications, the left and right edge are ragged, try
|
||||
-- ./x20c -dev xwin -wplt 0.3,0.3,0.6,0.6 -ori 0.5
|
||||
|
||||
-- Bugs in x20c.c:
|
||||
-- + if the window is resized after a selection is made on "lena", when
|
||||
--making a new selection the old one will re-appear.
|
||||
|
||||
|
||||
-- Parse and process command line arguments
|
||||
pl.parseopts(arg, pl.PL_PARSE_FULL)
|
||||
|
||||
-- Initialize plplot
|
||||
pl.init()
|
||||
|
||||
z={}
|
||||
|
||||
-- view image border pixels
|
||||
if dbg~=0 then
|
||||
pl.env(1, XDIM, 1, YDIM, 1, 1) -- no plot box
|
||||
|
||||
-- build a one pixel square border, for diagnostics
|
||||
for i = 1, XDIM do
|
||||
z[i] = {}
|
||||
z[i][1] = 1 -- left
|
||||
z[i][YDIM] = 1 -- right
|
||||
end
|
||||
|
||||
for i = 1, YDIM do
|
||||
z[1][i] = 1 -- top
|
||||
z[XDIM][i] = 1 -- botton
|
||||
end
|
||||
|
||||
pl.lab("...around a blue square."," ","A red border should appear...")
|
||||
|
||||
pl.image(z, 1, XDIM, 1, YDIM, 0, 0, 1, XDIM, 1, YDIM)
|
||||
end
|
||||
|
||||
-- sombrero-like demo
|
||||
if nosombrero==0 then
|
||||
r = {}
|
||||
pl.col0(2) -- draw a yellow plot box, useful for diagnostics! :(
|
||||
pl.env(0, 2*math.pi, 0, 3*math.pi, 1, -1)
|
||||
|
||||
for i = 1, XDIM do
|
||||
x[i] = (i-1)*2*math.pi/(XDIM-1)
|
||||
end
|
||||
for i = 1, YDIM do
|
||||
y[i] = (i-1)*3*math.pi/(YDIM-1)
|
||||
end
|
||||
|
||||
for i = 1, XDIM do
|
||||
r[i] = {}
|
||||
z[i] = {}
|
||||
for j=1, YDIM do
|
||||
r[i][j] = math.sqrt(x[i]^2+y[j]^2)+1e-3
|
||||
z[i][j] = math.sin(r[i][j])/r[i][j]
|
||||
end
|
||||
end
|
||||
|
||||
pl.lab("No, an amplitude clipped \"sombrero\"", "", "Saturn?")
|
||||
pl.ptex(2, 2, 3, 4, 0, "Transparent image")
|
||||
pl.image(z, 0, 2*math.pi, 0, 3*math.pi, 0.05, 1, 0, 2*math.pi, 0, 3*math.pi)
|
||||
|
||||
-- save the plot
|
||||
if f_name~="" then
|
||||
save_plot(f_name)
|
||||
end
|
||||
end
|
||||
|
||||
-- read Lena image
|
||||
-- Note we try two different locations to cover the case where this
|
||||
-- examples is being run from the test_c.sh script
|
||||
status, img_f, width, height, num_col = read_img("lena.pgm")
|
||||
if status~=0 then
|
||||
status, img_f, width, height, num_col = read_img("../lena.pgm")
|
||||
if status~=0 then
|
||||
pl.abort("No such file")
|
||||
pl.plend()
|
||||
os.exit()
|
||||
end
|
||||
end
|
||||
|
||||
-- set gray colormap
|
||||
gray_cmap(num_col)
|
||||
|
||||
-- display Lena
|
||||
pl.env(1, width, 1, height, 1, -1)
|
||||
|
||||
if nointeractive==0 then
|
||||
pl.lab("Set and drag Button 1 to (re)set selection, Button 2 to finish."," ","Lena...")
|
||||
else
|
||||
pl.lab(""," ","Lena...")
|
||||
end
|
||||
|
||||
pl.image(img_f, 1, width, 1, height, 0, 0, 1, width, 1, height)
|
||||
|
||||
-- selection/expansion demo
|
||||
if nointeractive==0 then
|
||||
xi = 200
|
||||
xe = 330
|
||||
yi = 280
|
||||
ye = 220
|
||||
|
||||
status, xi, xe, yi, ye = get_clip(xi, xe, yi, ye)
|
||||
if status~=0 then -- get selection rectangle
|
||||
pl.plend()
|
||||
os.exit()
|
||||
end
|
||||
|
||||
pl.spause(0)
|
||||
pl.adv(0)
|
||||
|
||||
-- display selection only
|
||||
pl.image(img_f, 1, width, 1, height, 0, 0, xi, xe, ye, yi)
|
||||
|
||||
pl.spause(1)
|
||||
|
||||
-- zoom in selection
|
||||
pl.env(xi, xe, ye, yi, 1, -1)
|
||||
pl.image(img_f, 1, width, 1, height, 0, 0, xi, xe, ye, yi)
|
||||
end
|
||||
|
||||
-- Base the dynamic range on the image contents.
|
||||
img_max, img_min = pl.MinMax2dGrid(img_f)
|
||||
|
||||
-- Draw a saturated version of the original image. Only use the middle 50%
|
||||
-- of the image's full dynamic range.
|
||||
pl.col0(2)
|
||||
pl.env(0, width, 0, height, 1, -1)
|
||||
pl.lab("", "", "Reduced dynamic range image example")
|
||||
pl.imagefr(img_f, 0, width, 0, height, 0, 0, img_min + img_max*0.25, img_max - img_max*0.25)
|
||||
|
||||
-- Draw a distorted version of the original image, showing its full dynamic range.
|
||||
pl.env(0, width, 0, height, 1, -1)
|
||||
pl.lab("", "", "Distorted image example")
|
||||
|
||||
stretch = {}
|
||||
stretch["xmin"] = 0
|
||||
stretch["xmax"] = width
|
||||
stretch["ymin"] = 0
|
||||
stretch["ymax"] = height
|
||||
stretch["stretch"] = 0.5
|
||||
|
||||
-- In C / C++ the following would work, with plimagefr directly calling
|
||||
-- mypltr. For compatibilty with other language bindings the same effect
|
||||
-- can be achieved by generating the transformed grid first and then
|
||||
-- using pltr2.
|
||||
-- pl.imagefr(img_f, width, height, 0., width, 0., height, 0., 0., img_min, img_max, mypltr, (PLPointer) &stretch)
|
||||
|
||||
cgrid2 = {}
|
||||
cgrid2["xg"] = {}
|
||||
cgrid2["yg"] = {}
|
||||
cgrid2["nx"] = width+1
|
||||
cgrid2["ny"] = height+1
|
||||
|
||||
for i = 1, width+1 do
|
||||
cgrid2["xg"][i] = {}
|
||||
cgrid2["yg"][i] = {}
|
||||
for j = 1, height+1 do
|
||||
xx, yy = mypltr(i, j)
|
||||
cgrid2["xg"][i][j] = xx
|
||||
cgrid2["yg"][i][j] = yy
|
||||
end
|
||||
end
|
||||
|
||||
--pl.imagefr(img_f, 0, width, 0, height, 0, 0, img_min, img_max, "pltr2", cgrid2)
|
||||
pl.imagefr(img_f, 0, width, 0, height, 0, 0, img_min, img_max, "mypltr")
|
||||
|
||||
pl.plend()
|
||||
Reference in New Issue
Block a user