上一篇 已经让 UNITY 集成 OPENCV 了 接下来就来做一些简单的开发
【一】调取摄像头 并且调起窗口成像
废话不多说 直接上代码
private CvCapture cvCapture;
IplImage pFrame = null;
private void Init() {
cvCapture = Cv.CreateCameraCapture(0);
StartCoroutine(WaitforCamera());
}
private IEnumerator WaitforCamera() {
//因为我使用了5米长的摄像头所以调起来摄像头的会花点时间,索性就直接延迟5S再去成像
yield return new WaitForSeconds(5);
StartCoroutine(main());
}
*由于我的摄像头加了滤镜 会把屏幕上的光全部过滤掉 只留红外光通过 所以会出现的这样颜色 IEnumerator main()
{
{
while (true)
{
yield return new WaitForEndOfFrame();
//逐帧获取图片
pFrame = Cv.QueryFrame(cvCapture);
{
yield return new WaitForEndOfFrame();
//逐帧获取图片
pFrame = Cv.QueryFrame(cvCapture);
Cv.ShowImage("Video", pFrame);
}
}
}
}
【二】将获取的图片进行灰度处理
还是继续上面的代码
IplImage grayImg = null;
IEnumerator main()
{
{
while (true)
{
yield return new WaitForEndOfFrame();
//逐帧获取图片
pFrame = Cv.QueryFrame(cvCapture);
nFrmNum++;
if (nFrmNum == 1)
{
if (nFrmNum == 1)
{
//只用第一帧的时候处理一次
grayImg = Cv.CreateImage(pFrame.GetSize(), pFrame.Depth, 1);
Cv.CvtColor(pFrame, grayImg, ColorConversion.RgbToGray);
}
Cv.ShowImage("Video", grayImg);
}
}