Installing Opencvdotnet: Install
Installing Opencvdotnet: Install
Installing Opencvdotnet: Install
Installing OpenCVDotNet
If all you want is to play around with the binary version of OpenCVDotNet (write some OpenCV
apps from C#), follow these steps:
You can install example code if you wish to try things out...
If you receive a FileNotFoundException with HRESULT 0x8007007E) after you execute your
program, see this issue for possible solutions.
Tutorial
This is a basic tutorial on how to use OpenCVDotNet
Hello, OpenCVDotNet
We'll create a simple C# project that uses OpenCVDotNet to perform a simple image-wise
operation on a video (AVI) file (show only the red color channel instead of all three color
channels).
You will first need to Install OpenCVDotNet (and all needed components).
CVImage.ToBitmap()
OpenCVDotNet's CVImage object has a wondrous method called ToBitmap(). This method turns
an OpenCV image into a .NET Bitmap object, which can be used whenever a Bitmap object is
accepted.
A common use of this method is to place a PictureBox on your form, and assign the resulting
Bitmap into the Image of the PictureBox. This way, a CV image can be displayed on a
Windows Form.
Add a PictureBox component to the form using the Forms Designer (double click on the
PictureBox item in the Toolbox.
Dock the picture box to your form (set the Dock property of the picture box to "Full").
CVCapture
CVCapture can be used to capture images from a video - it can either be constructed to capture
images from a Web Cam, or from an AVI file.
We will use a CVCapture and a .NET Timer object to play a video stream.
The Timer object will tick every 40 milliseconds (25 times per second), and in every tick, we
will capture the next frame of the video, analyze it and display it into the picture box.
Add a Timer object to the form using the Forms Designer (double click on the Timer item from
the Toolbox).
Configure the new timer object to tick every 40 milliseconds (set the Interval property to 40).
Enable the timer (set the Enabled property of the timer to True).
Add an event handler for the Timer.Tick event (double click on the Tick event of the Timer's
event list).
Add a handler for the Load event of your main form (double click on the Load event of the form
event list).
Press F7 to switch to code view of the form.
At the beginning of the file, add a using statement to include the OpenCVDotNet namespace.
Add a private member variable to contain the CVCapture object.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using OpenCVDotNet;
namespace HelloOpenCVDotNet
{
public partial class Form1 : Form
{
private CVCapture capture;
public Form1()
{
InitializeComponent();
}
}
}
}
Type in the following code under Form1_Load handler (under <path to AVI file>, put a path to
the AVI file that you wish to display).
private void Form1_Load(object sender, EventArgs e)
{
capture = new CVCapture("<path to AVI file>");
}
QueryFrame
Use the CVCapture.QueryFrame() method to receive the next frame every tick, convert it to a
Bitmap and assign it as the Picture Box's image.
Note that we use the using statement here, to make sure the CVImage object is disposed at the end
of the method. Without 'using', we would have to explicitly call nextFrame.Release() at the
end of the method.
Congrats! You can run your application and check it out. It should show the video you
referenced in the picture box, and it should be playing!
Now, we will do some changes to the image before it's displayed. We'll flip the color channels of
the image, so that we will use the red channel instead of the green channel, the blue channel
instead of the red and the green channel instead of the blue.
To do that, we will use the Split and Merge methods of CVImage. The Split method returns an
array of 3 CVImage objects, corresponding to the blue, green and red channels (in that order). The
Merge takes an array of three CVImage objects and merges them into the three channels (BGR
order as well).
Notes:
After the QueryFrame, we create a new CVImage object named emptyImage that is in the
same size of the original image, but with only one channel.
Then, we call Zero() to initialize the image to 0.
Then, we use Split to split the image to its 3 channels and Merge to merge the channels back,
taking only the 3rd component (red) and using emptyImage for the blue and green.
Note that we must release the images received from Split().
I think that you didn't consider of the end of the avi playing.It will lead to
"System.NullReferenceException?".To avoid this ,we could easily add these codes: if
(nextFrame != null) { capture = new CVCapture("<path to AVI file>");} else { capture = new
CVCapture("g:\\1.AVI");//reload} But,many avi files couldn't be opened: unsettled
“OpenCVDotNet.CVException” type of exceptional occured in OpenCVDotNet.dll Unable to
open file 'g:\1.AVI' for capture
Why?
can you show the use of CVCapture function to show a webcam output??
@simone.laurenzano: doing "capture = new CVCapture();" in the load method will tend to get
any attached camera. "capture = new CVCapture(0);" gets the zeroth webcam and so forth.
Can you show how to capture images using a web cam in C? If somebody can I will be so much
thankful to him/her.
@friism: How could I get the 2nd camera ? I use "capture = new CVCapture(1);" or other
number but I can't get anything .
Comment by hryspa0031, Jun 02, 2008
to charkac, here is some code from vc++. you have to use some lib. of openCV.
……
CvCapture * capture = 0; //for saving the captured video
IplImage * frame = 0; // for getting a frame from video
capture = cvCaptureFromCam(0);//record video from cam
frame = cvRetrieveGrame(capture);//get a frame from the captured video
……
Comment by steven.peris, Jun 27, 2008
i get the following when trying to run in VS 2005 studio with C#. it compiles fine, but i get the
following at run time
Message="The specified module could not be found. (Exception from HRESULT: 0x8007007E)"
Source="Examples" StackTrace?:
at OpenCVDotNet.Examples.Program.Main() at System.AppDomain?.nExecuteAssembly(Assembly
assembly, String args) at System.AppDomain?.ExecuteAssembly?(String assemblyFile, Evidence
assemblySecurity, String args) at
Microsoft.VisualStudio?.HostingProcess?.HostProc?.RunUsersAssembly?() at
System.Threading.ThreadHelper?.ThreadStart_Context?(Object state) at
System.Threading.ExecutionContext?.Run(ExecutionContext? executionContext, ContextCallback?
callback, Object state) at System.Threading.ThreadHelper?.ThreadStart?()
This does not seem to work for me. I am getting a Bad Image Header error from cvCloneImage
function. Does anyone know what the problem could be?
hello
when I try the project I got this error message: FileNotFoundException? Exception from
HRESULT: 0x8007007E
Hello all,
so I try to fix a problem with error signature and I make it, I download another opencvdotnet dll
libraries and program working very well.
>>>> But I want to use tracking for webcam not only for movie file. Please help me
somebody.<<<<<<
Bizzzar
If somebody want please write down your email adress and I send to you.
When i try to run the sample code that i got from the googles tutorial page ... here is the code
namespace WindowsFormsApplication1? {
InitializeComponent?();
try {
pictureBox1.Image = nextFrame.ToBitmap?();
} catch(Exception k) {
MessageBox?.Show(k.ToString?());
} catch (System.Exception k) {
MessageBox?.Show(k.ToString?());
I got the error message " Could not load file or Assembly 'OPenCVDotNet,
Version=1.0.2615.24735, Culture=neutral, PublicKeyToken?=null' or one of its dependencies .
This application has failed to start because the application configuration is incorrect .
HRESULT:0x800736B1 See the end of this message for details on invoking just-in-time (JIT)
debugging instead of this dialog box.
at WindowsFormsApplication1?.Form1.timer1_Tick(Object sender,
EventArgs? e)
at System.Windows.Forms.Timer.OnTick?(EventArgs? e) at
System.Windows.Forms.Timer.TimerNativeWindow?.WndProc?(Message& m) at
System.Windows.Forms.NativeWindow?.Callback(IntPtr? hWnd, Int32
WindowsFormsApplication1?
Assembly Version: 1.0.0.0 Win32 Version: 1.0.0.0 CodeBase?:
file:///C:/Documents%20and%20Settings/Anoop%20Krishnan%20G/My%20Documents/Visual
%20Studio
%202008/Projects/WindowsFormsApplication1/WindowsFormsApplication1/bin/Debug/WindowsForms
Application1.exe
System.Windows.Forms
System
System.Drawing
System.Configuration
System.Xml
For example:
<configuration>
</configuration>
When JIT debugging is enabled, any unhandled exception will be sent to the JIT debugger
registered on the computer rather than be handled by this dialog box.
This is the error message i got when running , the application compiles but run time errors are
occuring am using Visual Studio 2008 with OPENCV 1.0 with the OPENCVDOTNET.
Regards
Anoop Krishnan G