private void DrawAugmentatedImage() { Image <Bgr, Byte> res = BigImage.Clone(); res[1] = res[1] + MaskImage.ThresholdBinary(new Gray(1), new Gray(100)); AugImage = res; }
protected override Effect GetEffect(FastBitmap source) { FastBitmap maskBitmap = MaskImage.GetBitmap(); _maskImageWidth = maskBitmap.Width; _maskImageHeight = maskBitmap.Height; return(new ClippingMaskEffect { Mask = new ImageBrush(maskBitmap.InnerBitmap), InputCoordsOffset = new Vector(MaskPositionX / (double)source.Width, MaskPositionY / (double)source.Height), InputCoordsScale = new Vector(_maskImageWidth / (double)source.Width, _maskImageHeight / (double)source.Height) }); }
private void OnVideoPrepareCompleted(VideoPlayer source) { Debug.Log(source.name + "Prepare Completed!"); mPrepareCount++; //等左中右视频都准备完毕以后,统一开始播放 if (mPrepareCount >= 3) { MaskImage.Hide(); LeftVideo.Play(); MidVideo.Play(); RightVideo.Play(); mPrepareCount = 0; if (source.url.Contains("四季")) { //通知交互端开始倒计时 var msg = new UdpMessage(MessageDefine.WholeVideoEnd); UdpManager.Instance.SendMessage(msg.ToJson()); } } }
public void SetParent(LuaSpriteController parent) { CheckExists(); if (parent != null && parent.img.transform != null && parent.img.transform.parent.name == "SpritePivot") { throw new CYFException("text.SetParent(): Can not use SetParent with an Overworld Event's sprite."); } try { if (parent == null) { throw new CYFException("text.SetParent(): Can't set a sprite's parent as nil."); } container.transform.SetParent(parent.img.transform); foreach (Transform child in container.transform) { MaskImage childmask = child.gameObject.GetComponent <MaskImage>(); if (childmask != null) { childmask.inverted = parent._masked == LuaSpriteController.MaskMode.INVERTEDSPRITE || parent._masked == LuaSpriteController.MaskMode.INVERTEDSTENCIL; } } } catch { throw new CYFException("You tried to set a removed sprite/nil sprite as this text object's parent."); } }
private void StopAllVideoPlay() { //WholeVideo.Stop(); FourSeasonVideo.Stop(); MaskImage.Show(); }
// Create sprite object public override Tuple <Sprite, Sprite> GetSpriteParts(Data.Resource resource, uint index) { if (index >= Data.GetResourceCount(resource)) { return(Tuple.Create <Sprite, Sprite>(null, null)); } Resource dosRes = DosResources[(int)resource]; ColorDos[] palette = GetDosPalette(dosRes.DosPalette); Buffer data; if (palette == null) { return(Tuple.Create <Sprite, Sprite>(null, null)); } if (resource == Data.Resource.SerfTorso) { data = GetObject(dosRes.Index + index); if (data == null) { return(Tuple.Create <Sprite, Sprite>(null, null)); } Sprite torso = new SpriteDosTransparent(data, palette, 64); data = GetObject(dosRes.Index + index); if (data == null) { return(Tuple.Create <Sprite, Sprite>(null, null)); } Sprite torso2 = new SpriteDosTransparent(data, palette, 72); MaskImage maskImage = SeparateSprites(torso, torso2); data = GetObject(DATA_SERF_ARMS + index); Sprite arms = new SpriteDosTransparent(data, palette); torso.Stick(arms, 0, 0); return(maskImage); } else if (resource == Data.Resource.MapObject) { if ((index >= 128) && (index <= 143)) { // Flag sprites uint flagFrame = (index - 128) % 4; data = GetObject(dosRes.Index + 128 + flagFrame); if (data == null) { return(Tuple.Create <Sprite, Sprite>(null, null)); } Sprite s1 = new SpriteDosTransparent(data, palette); data = GetObject(dosRes.Index + 128 + 4 + flagFrame); if (data == null) { return(Tuple.Create <Sprite, Sprite>(null, null)); } Sprite s2 = new SpriteDosTransparent(data, palette); return(SeparateSprites(s1, s2)); } } else if (resource == Data.Resource.Font || resource == Data.Resource.FontShadow) { data = GetObject(dosRes.Index + index); if (data == null) { return(Tuple.Create <Sprite, Sprite>(null, null)); } return(Tuple.Create <Sprite, Sprite>(new SpriteDosTransparent(data, palette), null)); } data = GetObject(dosRes.Index + index); if (data == null) { return(Tuple.Create <Sprite, Sprite>(null, null)); } Sprite sprite; switch (dosRes.SpriteType) { case SpriteType.Solid: { sprite = new SpriteDosSolid(data, palette); break; } case SpriteType.Transparent: { sprite = new SpriteDosTransparent(data, palette); break; } case SpriteType.Overlay: { sprite = new SpriteDosOverlay(data, palette, 0x80); break; } case SpriteType.Mask: { sprite = new SpriteDosMask(data); break; } default: return(Tuple.Create <Sprite, Sprite>(null, null)); } return(Tuple.Create <Sprite, Sprite>(null, sprite)); }
private void backgroundWorkerGetFrames_DoWork(object sender, DoWorkEventArgs e) { while (!backgroundWorkerGetFrames.CancellationPending) { // capture a new frame try { //cam.Invoke("StartStreams", null); cam.Update(); //cam.Invoke("StopStreams", null); } catch (Exception ex) { GC.KeepAlive(ex); cam = new CameraClient("192.168.1.72", 8081, 8082, "MetriCam2.Cameras.Kinect2", "MetriCam2.Cameras.Kinect2"); cam.Connect(); //cam.Invoke("StopStreams", null); } Point3fImage p3Image = null; if (channel3DName == ChannelNames.Point3DImage) { Point3fCameraImage image3D = (Point3fCameraImage)cam.CalcChannel(ChannelNames.Point3DImage); p3Image = new Point3fImage(ref image3D); } else if (channel3DName == ChannelNames.Distance || channel3DName == ChannelNames.ZImage) { FloatCameraImage image3D = (FloatCameraImage)cam.CalcChannel(channel3DName); p3Image = new Point3fImage(new FloatImage(ref image3D), projectiveTransformation, channel3DName == ChannelNames.ZImage); } FloatImage ir = ConvertToFloatImage(cam.CalcChannel(channel2DName).ToFloatCameraImage()); Bitmap bitmap = ir.ToBitmap(); //secondBitmap = zImage.ToBitmap(); // set the picturebox-bitmap in the main thread to avoid concurrency issues (a few helper methods required, easier/nicer solutions welcome). this.InvokeSetBmp(bitmap); MaskImage mask = new MaskImage(p3Image.Width, p3Image.Height); ir = ir.Normalize(); for (int y = 0; y < mask.Height; y++) { for (int x = 0; x < mask.Width; x++) { Point3f p = p3Image[y, x]; if (p.X > -99f && p.X < 99f && p.Y > -99f & p.Y < 99f && p.Z > 0 && p.Z < 99f) { mask[y, x] = 0xff; } } } p3Image.EliminateFlyingPixels(5, 0.005f, 0.2f); p3Image.Mask = mask; TriangleIndexList til = new TriangleIndexList(p3Image, false, true); if (renderTil == null) { renderTil = new Metri3D.Objects.RenderTriangleIndexList(til, Color.White); panel3D.AddRenderObject(renderTil); } else { renderTil.UpdateData(til, Color.White); } panel3D.Invalidate(); } }
public void Mask(string mode) { switch (tag) { case "event": throw new CYFException("sprite.Mask: Can not be applied to Overworld Event sprites."); case "letter": throw new CYFException("sprite.Mask: Can not be applied to Letter sprites."); default: if (mode == null) { throw new CYFException("sprite.Mask: No argument provided."); } break; } MaskMode masked; try { masked = (MaskMode)Enum.Parse(typeof(MaskMode), mode, true); } catch { throw new CYFException("sprite.Mask: Invalid mask mode \"" + mode + "\"."); } if (masked != _masked) { //If children need to have their "inverted" property updated, then do so if ((int)_masked < 4 && (int)masked > 3 || (int)_masked > 3 && (int)masked < 4) { foreach (Transform child in GetTarget()) { MaskImage childmask = child.gameObject.GetComponent <MaskImage>(); if (childmask != null) { childmask.inverted = (int)masked > 3; } } } RectMask2D box = img.GetComponent <RectMask2D>(); Mask spr = img.GetComponent <Mask>(); switch (masked) { case MaskMode.BOX: //Remove sprite mask if applicable spr.enabled = false; box.enabled = true; break; case MaskMode.OFF: //Mask has been disabled spr.enabled = false; box.enabled = false; break; default: //The mask mode now can't possibly be box, so remove box mask if applicable spr.enabled = true; box.enabled = false; // Used to differentiate between "sprite" and "stencil"-like display modes spr.showMaskGraphic = masked == MaskMode.SPRITE || masked == MaskMode.INVERTEDSPRITE; break; } } _masked = masked; }