// 0.3.10-RC以上が必要 // https://github.com/sarxos/webcam-capture/issues/34 //@Grab(group='com.github.sarxos', module='webcam-capture', version='0.3.9') import java.awt.* import java.awt.image.* import javax.imageio.* import com.github.sarxos.webcam.* def webcam = Webcam.getDefault() if( webcam == null )return println "Webcam: " + webcam.getName() webcam.setViewSize(new Dimension(640, 480)) def detector = new WebcamMotionDetector(webcam) detector.setInterval(500) // 500ms detector.start() while(true){ if( detector.isMotion() ){ println "detected motion..." BufferedImage image = webcam.getImage() ImageIO.write(image, "PNG", new File("motion.png")) return } Thread.sleep(500) }
Showing posts with label groovy. Show all posts
Showing posts with label groovy. Show all posts
Friday, September 05, 2014
Webcam CaptureでWebカメラで撮影している内容に動きがあった時にファイル保存する
Webcam CaptureでWebカメラで撮影している内容に動きがあった時にファイル保存するには、以下のコードを実行します。
Friday, August 29, 2014
groovyとWebcam CaptureでWebカメラで撮影している内容をウインドウに表示する
groovyとWebcam CaptureでWebカメラで撮影している内容をウインドウに表示するには、以下のコードを実行します。
@Grab(group='com.github.sarxos', module='webcam-capture', version='0.3.9') import java.awt.* import javax.swing.* import groovy.swing.* import com.github.sarxos.webcam.* import com.github.sarxos.webcam.WebcamPanel def webcam = Webcam.getDefault() if( webcam == null)return webcam.setViewSize(new Dimension(640, 480)) WebcamPanel pnl = new WebcamPanel(webcam) pnl.setFillArea(true) sb = new SwingBuilder() sb.edt { frame( title: "example - webcam capture", show: true, resizable: true, size: [640, 480], defaultCloseOperation: WindowConstants.EXIT_ON_CLOSE ){ widget(pnl) } }
Friday, August 22, 2014
groovyとWebcam CaptureでWebカメラから画像を保存する
groovyとWebcam CaptureでWebカメラから画像を保存するには、以下のコードを実行します。
@Grab(group='com.github.sarxos', module='webcam-capture', version='0.3.9') import java.awt.* import java.awt.image.* import javax.imageio.* import com.github.sarxos.webcam.* def webcam = Webcam.getDefault() if( webcam == null )return println "Webcam: " + webcam.getName() webcam.setViewSize(new Dimension(640, 480)) webcam.open() BufferedImage image = webcam.getImage() ImageIO.write(image, "PNG", new File("test.png"))
Monday, October 15, 2012
groovyで画像を万華鏡のように変換する
groovyで画像を万華鏡のように変換するには、以下のコードを実行します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@Grab(group='com.jhlabs', module='filters', version='2.0.235') import java.awt.* import java.awt.image.* import java.io.* import javax.imageio.* import com.jhlabs.composite.* import com.jhlabs.image.* // 画像を万華鏡のように変換する def img = ImageIO.read(new File("sf2.jpg")) KaleidoscopeFilter kf = new KaleidoscopeFilter() // 面数 kf.setSides(7) // 角度1 kf.setAngle((float)40f/180f*ImageMath.PI) // 角度2 kf.setAngle2((float)10f/180f*ImageMath.PI) // 中心X kf.setCentreX(0.5f) // 中心Y kf.setCentreY(0.5f) // 半径 kf.setRadius((int)(img.getWidth()>img.getHeight()?img.getWidth()/2:img.getHeight()/2)) img = kf.filter(img, null) ImageIO.write(img, "png", new File("kaleidoscope.png"))
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
Saturday, October 13, 2012
groovyでチェック柄の布の模様を生成する
groovyでチェック柄の布の模様を生成するには、以下のコードを実行します。
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@Grab(group='com.jhlabs', module='filters', version='2.0.235') import java.io.* import java.awt.* import java.awt.geom.* import java.awt.image.* import javax.imageio.* import com.jhlabs.image.* // チェック柄の布の模様を生成する def img = new BufferedImage( 200, 200, BufferedImage.TYPE_INT_ARGB ) def rectsize = 20 Color color1 = new Color((int)0x588F27) Color color1l = color1.darker() Color color2 = new Color((int)0xBF372A) Color color2l = color2.darker() def gr = img.createGraphics() for(int ly=0;ly<img.getHeight();ly+=rectsize){ def cc=((int)ly/rectsize)%2==0?0:1 for(int lx=0;lx<img.getWidth();lx+=rectsize){ if( cc%2 == 0 ){ for(int py=0;py<=rectsize;py+=2){ gr.setColor(color1) gr.drawLine(lx, ly+py, lx+rectsize, ly+py) gr.setColor(color1l) gr.drawLine(lx, ly+py+1, lx+rectsize, ly+py+1) } } else { for(int px=0;px<=rectsize;px+=2){ gr.setColor(color2) gr.drawLine(lx+px, ly, lx+px, ly+rectsize) gr.setColor(color2l) gr.drawLine(lx+px+1, ly, lx+px+1, ly+rectsize) } } cc++ } } def sf = new SmearFilter() sf.setShape(SmearFilter.CROSSES) sf.setDensity(0.9f) sf.setDistance(7) sf.setScatter(0.8f) //sf.setAngle((float)30*ImageMath.PI/180) img = sf.filter(img, null) ImageIO.write(img, "png", new File("checkerfabric.png"))
出力画像
動作環境
groovy 1.8.6, JDK7 update4
Friday, October 12, 2012
groovyで写真を夕暮れ風に加工する
groovyで写真を夕暮れ風に加工するには、以下のコードを実行します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@Grab(group='com.jhlabs', module='filters', version='2.0.235') import java.awt.* import java.awt.image.* import java.io.* import javax.imageio.* import com.jhlabs.composite.* import com.jhlabs.image.* // 写真を夕暮れ風に加工する def img = ImageIO.read(new File("sf2.jpg")) def imga = new BufferedImage( img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB ) def gr = imga.createGraphics() gr.drawImage(img,0,0,null) gr.dispose() // 閾値で2色画像を作成 def threshold = 127 def white = (int)0x50F24405 def black = (int)0x503E606F def wr = imga.getRaster() def buf = new int[4] for(int ly=0;ly<wr.getHeight();ly++){ for(int lx=0;lx<wr.getWidth();lx++){ wr.getPixel(lx, ly, buf) if( PixelUtils.brightness((buf[0]<<16)+(buf[1]<<8)+buf[2]) > threshold ){ buf[0] = (white >> 16) & 0xff buf[1] = (white >> 8) & 0xff buf[2] = white & 0xff buf[3] = (white >> 24) & 0xff } else { buf[0] = (black >> 16) & 0xff buf[1] = (black >> 8) & 0xff buf[2] = black & 0xff buf[3] = (black >> 24) & 0xff } wr.setPixel(lx, ly, buf) } } // ぼかす def gf = new GaussianFilter() gf.setRadius(3f) imga = gf.filter(imga, null) // 重ね合わせ def gr2 = img.createGraphics() gr2.drawImage(imga,0,0,null) gr2.dispose() ImageIO.write(img, "png", new File("sunset.png"))
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
Tuesday, October 09, 2012
groovyでタイル模様のグラデーションを描画する
groovyでタイル模様のグラデーションを描画するには、以下のコードを実行します。
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@Grab(group='com.jhlabs', module='filters', version='2.0.235') import java.io.* import java.awt.* import java.awt.geom.* import java.awt.image.* import javax.imageio.* import com.jhlabs.image.* // タイル模様のグラデーションを描画する def img = new BufferedImage( 200, 200, BufferedImage.TYPE_INT_ARGB ) def tilesize = 16 def padding = 2 def interval = tilesize + padding*2 def lc = new LinearColormap((int)0xFFF24405, (int)0xFFF7E967) def gr = img.createGraphics() def dc = (float)1/Math.ceil(img.getHeight()/interval) float colorpos = 0f for(int ly=0;ly<img.getHeight();ly+=interval){ gr.setColor(new Color(lc.getColor(colorpos))) colorpos += dc for(int lx=0;lx<img.getWidth();lx+=interval){ gr.fillRect(lx+padding, ly+padding, tilesize, tilesize) } } ImageIO.write(img, "png", new File("drawgradienttiles.png"))
出力画像
動作環境
groovy 1.8.6, JDK7 update4
Saturday, October 06, 2012
groovyで画像を着色して強調する
groovyで画像を着色して強調するには、以下のコードを実行します。トイカメラ風に色がついた画像に変換します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@Grab(group='com.jhlabs', module='filters', version='2.0.235') import java.io.* import java.awt.* import java.awt.geom.* import java.awt.image.* import javax.imageio.* import com.jhlabs.composite.* import com.jhlabs.image.* // 画像を着色して強調する def img = ImageIO.read(new File("sf2.jpg")) def img2 = new BufferedImage( img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB ) // 着色 def ff = new FillFilter((int)0xffad63e3) img2 = ff.filter(img2, null) def cf = new CompositeFilter( MiscComposite.getInstance(MiscComposite.BLEND, 0.3f)) img = cf.filter(img2, img) // コントラストを250% def ctf = new ContrastFilter() ctf.setContrast(2.5f) img = ctf.filter(img, null) ImageIO.write(img, "png", new File("tintcontrast.png"))
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
groovyでかすれた感じの透過2値化画像に変換する
groovyでかすれた感じの透過2値化画像に変換するには、以下のコードを実行します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@Grab(group='com.jhlabs', module='filters', version='2.0.235') import java.awt.* import java.awt.image.* import java.io.* import javax.imageio.* import com.jhlabs.composite.* import com.jhlabs.image.* // かすれた感じの透過2値化画像 def img = ImageIO.read(new File("sf2.jpg")) def imga = new BufferedImage( img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB ) def gr = imga.createGraphics() gr.drawImage(img,0,0,null) gr.dispose() def threshold = 127 def white = (int)0x00000000 def black = (int)0xff1C425C def wr = imga.getRaster() def buf = new int[4] for(int ly=0;ly<wr.getHeight();ly++){ for(int lx=0;lx<wr.getWidth();lx++){ wr.getPixel(lx, ly, buf) if( PixelUtils.brightness((buf[0]<<16)+(buf[1]<<8)+buf[2]) > threshold ){ buf[0] = (white >> 16) & 0xff buf[1] = (white >> 8) & 0xff buf[2] = white & 0xff buf[3] = (white >> 24) & 0xff } else { buf[0] = (black >> 16) & 0xff buf[1] = (black >> 8) & 0xff buf[2] = black & 0xff buf[3] = (black >> 24) & 0xff } wr.setPixel(lx, ly, buf) } } def df = new DiffuseFilter() df.setScale(2) imga = df.filter(imga, null) ImageIO.write(imga, "png", new File("threshold3diffuse.png"))
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
groovyでエッジ抽出した透過画像を作成する
groovyでエッジ抽出した透過画像を作成するには、以下のコードを実行します。
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@Grab(group='com.jhlabs', module='filters', version='2.0.235') import java.awt.* import java.awt.image.* import java.io.* import javax.imageio.* import com.jhlabs.composite.* import com.jhlabs.image.* // エッジ抽出した透過画像を作成する def img = ImageIO.read(new File("sf2.jpg")) def imga = new BufferedImage( img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB ) def gr = imga.createGraphics() gr.drawImage(img,0,0,null) gr.dispose() // グレースケールフィルタ def grf = new GrayscaleFilter() imga = grf.filter(imga, null) // エッジ抽出 def ef = new EdgeFilter() imga = ef.filter(imga, null) def lc = new LinearColormap((int)0x00000000, (int)0xff7799dd) LookupFilter lf = new LookupFilter(lc) imga = lf.filter(imga, null) ImageIO.write(imga, "png", new File("edgetransparency.png"))
元画像
出力画像
動作環境
groovy 1.8.6, JDK7 update4
Tuesday, October 02, 2012
groovyで手書き風タイル模様を描画する
groovyで手書き風タイル模様を描画するには、以下のコードを実行します。
出力画像
動作環境
groovy 1.8.6, JDK7 update4
@Grab(group='com.jhlabs', module='filters', version='2.0.235') import java.io.* import java.awt.* import java.awt.geom.* import java.awt.image.* import javax.imageio.* import com.jhlabs.image.* // 手書き風タイル模様を描画する def img = new BufferedImage( 200, 200, BufferedImage.TYPE_INT_ARGB ) def tilesize = 16 def padding = 2 def interval = tilesize + padding*2 Color color1 = new Color((int)0x5E728C) def gr = img.createGraphics() gr.setColor(color1) for(int ly=0;ly<img.getHeight();ly+=interval){ for(int lx=0;lx<img.getWidth();lx+=interval){ gr.fillRect(lx+padding, ly+padding, tilesize, tilesize) } } def df = new DiffuseFilter() df.setScale((int)padding) img = df.filter(img, null) def mf = new MedianFilter() img = mf.filter(img, null) ImageIO.write(img, "png", new File("drawtileshand.png"))
出力画像
動作環境
groovy 1.8.6, JDK7 update4
Subscribe to:
Posts (Atom)