我想用相机拍摄网络摄像头.为此我使用了2个引用:AForge.Video.dll和AForge.Video.DirectShow.dll.
public FilterInfoCollection CamsCollection;
public VideoCaptureDevice Cam = null;
void Cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
frameholder.Source = (Bitmap)eventArgs.Frame.Clone();
/* ^
* Here it cannot convert implicitly from System.Drawing.Bitmap to
* System.Windows.Media.ImageSource
*/
}
private void startcam_Click(object sender, RoutedEventArgs e)
{
CamsCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice);
Cam = new VideoCaptureDevice(CamsCollection[1].MonikerString);
Cam.NewFrame += new NewFrameEventHandler(Cam_NewFrame);
Cam.Start();
}
private void stopcam_Click(object sender, RoutedEventArgs e)
{
Cam.Stop();
}
Run Code Online (Sandbox Code Playgroud)
}
他们用a PictureBox来显示帧.当我在WPF工作时,我使用了它
总结一下这是我的代码目前的样子.
public FilterInfoCollection CamsCollection; …Run Code Online (Sandbox Code Playgroud) 我需要为我的图像做一些阈值处理.阈值滤波器功能只接受8-16bpp灰度.我的位图图片具有32bppRGB像素格式.请为此建议一些代码.(我也想知道是否有可能没有像素操作)
ps我正在使用Aforge.NET进行阈值处理.
谢谢
-Sagar
请告诉我以下哪项是一项优秀的编程实践:
1.使用静态类,然后使用类MainWindow构造函数对它的引用,如下所示:
public partial class Mainwindow : Window
{
public MainWindow()
{
InitializeComponent();
UI.window = this;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Shutdownads attempt1 = new Shutdownads();
}
}
static class UI
{
public static MainWindow window;
}
/*and then refering to the wpf elements from other classes as follows
UI.window.textbox.Text="blahblah"
UI.window.button ... and so on
*/
Run Code Online (Sandbox Code Playgroud)
要么
2.在MainWindow类中包含我的程序中的所有类是否更好?
要么
3.有没有更好的选择(也可以实现更好的OOP以及我可以通过其他类访问UI)?