我需要一个视频来使用色度键滤镜/绿屏滤镜并将其覆盖在另一个视频上并将其作为新视频输出.
是否有用于此目的的现有库,脚本,过滤器或解决方案?
我想用Gif或图像像Vigo更改Surface预览底部叠加层
像这样
请告诉我任何sdk或我用于此过滤器的内容
我可以使用此更改顶视图上的叠加层
PictureCallback cameraPictureCallbackJpeg = new PictureCallback()
{
@Override
public void onPictureTaken(byte[] data, Camera camera)
{
// TODO Auto-generated method stub
Bitmap cameraBitmap = BitmapFactory.decodeByteArray
(data, 0, data.length);
int wid = cameraBitmap.getWidth();
int hgt = cameraBitmap.getHeight();
// Toast.makeText(getApplicationContext(), wid+""+hgt, Toast.LENGTH_SHORT).show();
Bitmap newImage = Bitmap.createBitmap
(wid, hgt, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(newImage);
canvas.drawBitmap(cameraBitmap, 0f, 0f, null);
Drawable drawable = getResources().getDrawable
(R.drawable.mark3);
drawable.setBounds(20, 30, drawable.getIntrinsicWidth()+20, drawable.getIntrinsicHeight()+30);
drawable.draw(canvas);
File storagePath = new File(Environment.
getExternalStorageDirectory() + "/PhotoAR/");
storagePath.mkdirs(); …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种从很多图片中自动删除(=透明)"绿色屏幕"肖像背景的方法.
我自己的尝试到目前为止......呃...不太成功.
我正在四处寻找有关该主题的任何提示,解决方案或论文.商业解决方案也很好.
在你发表评论之前说它不可能自动完成:不,不是.实际上有一家公司提供这种服务,如果我没有提出不同的解决方案,我们将使用它们.问题是他们用自己的生命保护算法,因此不会出售/许可他们的软件.相反,我们必须将所有图片FTP到处理完成的地方,然后我们将结果FTP回家.(不,他们没有在菲律宾隐藏的工资过低的工作人员手动处理这个问题,因为我们每天都在谈几千张图片 ......)但是,这种做法限制了它的用处,原因有几个.所以我真的很喜欢这样的解决方案,可以在互联网离线时立即完成.
编辑:我的"肖像"描绘了有头发的人 - 这是一个非常棘手的部分,因为绿色背景会流入头发.另一个棘手的部分是,如果有可能在背景中的绿色和人们衣服中的相同绿色之间进行distingush.我上面谈到的公司声称他们可以通过弄清楚绿色区域是否在焦点(锐利与模糊)来做到这一点.
我刚刚阅读了本教程并尝试了这个例子.所以我从网上下载了一个视频供我自己测试.我所要做的就是调整条件下的rgb值
这里是示例中的示例代码
computeFrame: function() {
this.ctx1.drawImage(this.video, 0, 0, this.width, this.height);
let frame = this.ctx1.getImageData(0, 0, this.width, this.height);
let l = frame.data.length / 4;
for (let i = 0; i < l; i++) {
let r = frame.data[i * 4 + 0];
let g = frame.data[i * 4 + 1];
let b = frame.data[i * 4 + 2];
if (g > 100 && r > 100 && b < 43)
frame.data[i * 4 + 3] = 0;
}
this.ctx2.putImageData(frame, …
Run Code Online (Sandbox Code Playgroud) 这是我需要实现的:
结果示例:
原始图像
结果图片
这是我尝试过的:
CGFloat colorMasking[6]={222,255,222,255,222,255};
CGImageRef imageRef = CGImageCreateWithMaskingColors([IMG CGImage], colorMasking);
UIImage *resultThumbImage = [UIImage imageWithCGImage:imageRef scale:ThumbImage.scale orientation:IMG.imageOrientation];
Run Code Online (Sandbox Code Playgroud)
它唯一的工作在白色背景.它不是更有效.我需要达到我在上面的图像中放置的确切结果.
我还提到了一些参考文献:
有人可以帮我实现这个目标吗?
任何参考或将受到高度赞赏.
提前致谢.
我正在使用以下代码从图像中删除绿色背景.但图像的边缘具有绿色色调,并且一些像素被损坏.如何使其平滑并使切割完美.
func chromaKeyFilter(fromHue: CGFloat, toHue: CGFloat) -> CIFilter?
{
// 1
let size = 64
var cubeRGB = [Float]()
// 2
for z in 0 ..< size {
let blue = CGFloat(z) / CGFloat(size-1)
for y in 0 ..< size {
let green = CGFloat(y) / CGFloat(size-1)
for x in 0 ..< size {
let red = CGFloat(x) / CGFloat(size-1)
// 3
let hue = getHue(red: red, green: green, blue: blue)
let alpha: CGFloat = (hue >= fromHue && hue …
Run Code Online (Sandbox Code Playgroud) 我需要在openFrameworks应用程序中实现色度键控(删除纯色背景).
我将同时播放许多(10个或更多)视频(在同一帧中),并将它们与替代背景一起绘制到屏幕上.我可以通过迭代每个帧的像素并根据绿色阈值为每个像素设置alpha值来实现类似色度键的效果,但是同时有如此多的视频,这种像素敲击变得令人望而却步.
是否有一个简单的OpenGL混合模式或屏蔽操作,可以避免绘制某个颜色值的所有像素?或者是否有另一个openFrameworks或openFrameworks兼容的C++库可以有效地执行此操作?
或者,是否有一种良好(节省空间)的方式在快速兼容的视频文件中存储alpha通道?我们将存储数TB的视频(连续录制数周),因此我们使用节省空间的格式非常重要.
一个注意事项:源文件中的色度键颜色将是"完美的" - 它是以数字方式添加的.因此,如果有某种阈值处理或按位逻辑技巧可以做到这一点,那也可以.
编辑:这是有效的,遵循VJo的像素着色器的建议.我们使用glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
了以下像素着色器(洋红色作为替换颜色):
"数据/着色器/ chromakey.frag":
#extension GL_ARB_texture_rectangle : enable
uniform sampler2DRect src_tex_unit0;
vec4 color;
void main( void )
{
vec2 st = gl_TexCoord[0].st;
vec4 sample = texture2DRect(src_tex_unit0, st );
gl_FragColor = sample;
if((sample.r > 0.5) && (sample.g < 0.5) && (sample.b > 0.5)) {
gl_FragColor.a = 0.0;
}
}
Run Code Online (Sandbox Code Playgroud)
"数据/着色器/ chromakey.vert":
void main()
{
gl_Position = ftransform();
gl_TexCoord[0] = gl_MultiTexCoord[0];
}
Run Code Online (Sandbox Code Playgroud)
着色器的C++代理类 - shaderChromakey.h:
#include "ofMain.h"
#include "ofxShader.h"
#include "ofxFBOTexture.h"
class …
Run Code Online (Sandbox Code Playgroud) 我一直在寻找使用ImageMagick的绿屏色度键的好算法,但到目前为止还没有令人满意的答案.
我想探索一种在HSV/HSB颜色空间中使用范围选择的简单方法(类似于-fuzz)来选择我想要的绿色并使它们透明.-fuzz似乎仅适用于RGB空间,这是不希望的.
任何人都可以教我如何选择具有H,S,V分量的单独范围的颜色,例如,115-125度色调,40%-60%饱和度和30-80%值.
如果还有其他更好的色度键算法,您的建议也非常受欢迎.
提前致谢.
我正在研究适用于Windows 8的台式电脑照片软件.我希望能够通过色度键控从照片中删除绿色背景.
我是图像处理的初学者,我找到了一些很酷的链接(比如http://www.quasimondo.com/archives/000615.php),但我不能用c#代码转换它.
我正在使用网络摄像头(使用aforge.net)查看预览并拍照.我尝试过滤色镜,但绿色背景并不是很均匀,所以这不起作用.
如何在C#中正确地做到这一点?
我有数百张图片,它们看起来都与此处的这张图片相似:
我只是想使用绿色屏幕为每个看起来像这里的图像创建一个蒙版(最好将边框稍微平滑一点):
如果您想进行测试,这里是原始图像:https : //mega.nz/# !0YJnzAJR! GRYI4oNWcsKztHGoK7e4uIv_GvXBjMvyry7cPmyRpRA
我找到了这篇文章,其中用户使用 Imagemagick 来实现色度键控。
for i in *; do convert $i -colorspace HSV -separate +channel \
\( -clone 0 -background none -fuzz 3% +transparent grey43 \) \
\( -clone 1 -background none -fuzz 10% -transparent grey100 \) \
-delete 0,1 -alpha extract -compose Multiply -composite \
-negate mask_$i; done;
Run Code Online (Sandbox Code Playgroud)
我觉得自己很傻,这么简单的问题我自己都找不到解决办法。另请注意,我使用的是 Linux。所以没有Photoshop或After Effects!:)
但我确信必须有一个解决方案来解决这个问题。
我已经使用刚试过这种蓝绿脚本由fmw42运行./greenscreen infile.jpg outfile.png
,我相当满意的结果。
但是处理一张图像大约需要 40 秒,这导致我所有图像的总时间为 …
image imagemagick image-processing batch-processing chromakey