OCR 识别老验证码,老算式验证码,集装箱号 C#/JavaScript&HTML5

作者:V君 发布于:2016-9-10 3:25 Saturday 分类:挖坑经验

最近 这些天 在负责集装箱拖运相关的项目, 

要从某些行业平台上取得集装箱信息.

要在手机网页识别集装箱号. 

点击查看原图

点击查看原图

点击查看原图

点击查看原图

阅读全文>>

标签: 软件开发 javascript C# 图像处理 OCR

评论(0) 引用(0) 浏览(957)

用C#修正32位位图A通道

作者:V君 发布于:2016-8-10 12:23 Wednesday 分类:折腾手记

TL;DR  几行代码:
static Bitmap FixAlpha(Bitmap bmp)
{
    if (bmp.PixelFormat != PixelFormat.Format32bppRgb)
        return bmp;
        
    var data = bmp.LockBits(new Rectangle(Point.Empty, bmp.Size),             ImageLockMode.ReadOnly,PixelFormat.Format32bppRgb);
    
    var bma = new Bitmap(bmp.Width, bmp.Height, bmp.Width * 4, 
        PixelFormat.Format32bppArgb, data.Scan0);
    
    bmp.UnlockBits(data);
    return bma;

}

扯扯:
在讨论版看到有po遇到这个自己已经解决的问题, 但是没有授权回复不了, 那就发出来了
目测那个po也是从视觉小说提取出来的 CG, 不知道是提取器的锅还是咋地, 
会得到黑(或杂色)背景的 32 位 BMP, 弄清楚原因之后批量处理再保存成 PNG 就搞定了.

标签: 软件开发 C# 图像处理

评论(0) 引用(0) 浏览(660)

C#使用DirectShow接收摄像头或采集卡图像,可叠加OSD,录制视频,抓拍照片,玩视频监控

作者:V君 发布于:2015-10-28 2:11 Wednesday 分类:挖坑经验

经过几天折腾都是些弯路, 这次不扯也不TL;DR


创建Graph,添加以下Filter

从Video Capture Source分类里面找你的摄像头或者采集卡

Smart Tee (经过这货的preview输出会使画面流畅, 具体我也不知道为啥)

AVI Decompressor (万用的图像格式转换滤镜?

TextOverFilter (参见 Pure .NET DirectShow Filters in C#

(自动添加 Color Space Converter 具体为啥不知道, 反正能工作)

Video Mixing Renderer 9 (不支持远程桌面, 但性能比 VideoRender好, 

远程桌面时用后者, 善用条件编译

用 GraphStudio 画的框图就像这样

点击查看原图

用代码来做以上结构大概就像下面这样, 

可以参考 SVN 上的栗子, 把视频窗口句柄绑好就可以吃了

 

var devices = new DSVideoCaptureCategory().Objects.OrderBy(p => p.Name).ToArray();


_graph = new Graph();


_osd = new TimeLocOsdFilter(_deviceIndex);

_osd.NewFrame += NewFrame;


var cd = _graph.AddDeviceFilter(devices[_deviceIndex]);

var st = _graph.AddFilter(new DSFilter(Misc.SmartTee), "st");

var av = _graph.AddFilter(new DSFilter(Misc.AviDecompressor), "av");

var to = _graph.AddFilter(new DSFilter(_osd), "to");


#if DEBUG

var vr = _graph.AddFilter(new DSFilter(VideoRender.VideoRenderer), "vr"); //FOR RDP

#else

var vr = _graph.AddFilter(new DSFilter(VideoRender.VideoMixingRenderer9), "vr");

#endif


_graph.Connect(cd.OutputPin, st.InputPin);

_graph.Connect(st.Output[1], av.InputPin);

_graph.Connect(av.OutputPin, to.InputPin);

_graph.Connect(to.OutputPin, vr.InputPin);

 

然后是录制视频和抓拍了,由于VFW版本的视频压缩不是很好用 于是这里稍稍走点歪门邪道

OSD的GDI+处理完之后把位图对象丢出来,给外面按需做副本什么的之后再销毁.

抓拍就可以随随便便实现了, 至于写视频文件

依然是像之前用AForge.DirectShow那样把帧交给AForge.FFMPEG


其实老早就用DirectShow玩视频播放了, 这次又遇到视频捕捉的需求, 于是就写成了博文

(其实是再不发这个月就0篇了 



标签: 软件开发 C# 图像处理 Winform 视频监控 DirectShow

评论(0) 引用(0) 浏览(1632)

在C#用指针实现快速图像处理

作者:V君 发布于:2014-3-31 11:04 Monday 分类:挖坑经验

工作上需要, 于是补了一把图像处理. 这就是过程产物.

  

阅读全文>>

标签: 软件开发 C# 图像处理 算法

评论(0) 引用(0) 浏览(1541)

Powered by emlog 去你妹的备案 sitemap