调用摄像头,并进行灰度,边缘检测

// 机器人.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

IplImage * doPyrDown(IplImage* in, int filter = IPL_GAUSSIAN_5x5)//使用cvPyrDown()创建一个宽度和高度为输入图像一般尺寸的图像
{
assert(in->width % 2 == 0 && in->height % 2 == 0);
IplImage * out = cvCreateImage(cvSize(in->width / 2, in->height / 2), in->depth, in->nChannels);
cvPyrDown(in, out);
/*
该函数实现创建高度和宽度为输入图像的的一般的尺寸
其中的filter在这个函数中为默认定义
其真实形式为 cvPyDown(in,out,filter);
IPL_GAUSSIAN_5x5意思是默认用的就是5*5的高斯模板。
*/
return (out);
};

IplImage* doCanny(IplImage* in, double low, double high, double aperture)//为图像做边缘检测
{
// if (in->nChannels != 1) return 0;
IplImage* out = cvCreateImage(
cvGetSize(in),
IPL_DEPTH_8U,
1);
cvCanny(in, out, low, high, aperture);
return (out);
};

IplImage* doGray(IplImage* in)//为图像做灰度
{
IplImage* out =cvCreateImage(cvGetSize(in), IPL_DEPTH_8U, 1);
cvConvertImage(in, out, 1);
return (out);
}

/*IplImage* dobinary(IplImage* in)//为图像做二值化
{
IplImage* out = cvCreateImage(cvGetSize(in), IPL_DEPTH_8U, 1);
cvThreshold(in,out, 200, 255, CV_THRESH_BINARY);
return out;
}*/

void main()
{
cvNamedWindow("Video", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Gray", CV_WINDOW_AUTOSIZE);
cvNamedWindow("binary", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Canny", CV_WINDOW_AUTOSIZE);
CvCapture * capture;

capture = cvCreateCameraCapture(0);
IplImage* in;
while (1){
in = cvQueryFrame(capture);
IplImage* img1 = doPyrDown(in);
IplImage* img2 = doGray(img1);
IplImage* img3 = dobinary(img2);
IplImage* img4 = doCanny(img1, 10,100,3);

cvShowImage("Video", in);
cvFlip(img2,img2);
cvShowImage("Gray", img2);
cvFlip(img3,img3);
cvShowImage("binary", img3);
cvShowImage("Canny", img4);

char c = cvWaitKey(33);
if (c == 27)
break;
in = cvQueryFrame(capture);
}
}

时间: 2024-12-18 23:52:24

调用摄像头,并进行灰度,边缘检测的相关文章

C#调用摄像头(AForge)实现扫描条码解析(Zxing)功能

网上找了很多代码,都比较零散,下面是我测试过的,可以直接使用.DLL及源码可以通过链接下载. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Wind

麦子学院Android实战调用摄像头代码分享

Android如何实现调用摄像头?在安卓APP开发的过程中,经常会需要调用手机自身摄像头拍照的代码,那么android调用摄像头的代码是什么呢?现在麦子学院android开发老师告诉大家,android调用摄像头这个方法十分的简单实用,有需要的小伙伴可以参考下. 应用场景: 在Android开发过程中,有时需要调用手机自身设备的功能,本文侧重摄像头拍照功能的调用. 知识点介绍: 使用权限:调用手机自身设备功能(摄像头拍照功能),应该确保已经在AndroidManifest.xml中正确声明了对摄

win8 metro 调用摄像头拍摄照片并将照片保存在相应的位置

刚刚做过这类开发,所以就先献丑了,当然所贴上的源码都是经过验证过的,已经运行成功了,希望可以给大家一些借鉴: 下面是metro UI代码: <Page x:Class="Camera.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

android调用摄像头拍照

调用手机摄像头拍照,获取拍照后的图片数据.以下代码是在activity中:     // 调用摄像头         Button b = (Button) findViewById(R.id.btn1);     b.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             // Here we fire the inte

【C#】#100 调用摄像头

需求:由于项目需要获得用户的头像,所以需要用C#调用摄像头获取头像. 下面写一个调用摄像头的方法 案例:调用摄像头的一个DEMO[效果图] 使用的类库:AForge.dll   [Demo下载,Demo里面有类库] 1.检测电脑上的摄像头设备 FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); 用Count判断摄像头设备的个数,如果没有摄像头,则抛出异常[自行

使用vue做移动app时,调用摄像头扫描二维码

现在前端技术发展飞快,前端都能做app了,那么项目中,也会遇到调用安卓手机基层的一些功能,比如调用摄像头,完成扫描二维码功能 下面我就为大家讲解一下,我在项目中调用这功能的过程. 首先我们需要一个中间框架,hbuilder http://www.html5plus.org/doc/zh_cn/accelerometer.html 这个是html5+的文档地址,我们找到Barcode模块, 有这么多,然后我们往下找 找到这段代码 <!DOCTYPE html> <html> <

Android入门(十六)调用摄像头相册

原文链接:http://www.orlion.ga/665/ 一.调用摄像头 创建一个项目ChoosePicDemo,修改activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent&qu

HTML5——利用navigator+Video调用摄像头进行录像

以前无聊的时候玩儿过HTML5,感觉里面的很多新标签确实深深震撼了我额.... 今天需求那边要做这样一个功能,在微信里面调用摄像头进行拍摄,然后上传.刚开始最先想到的是Video标签,只要将它的src指定为当前摄像头录制到的视频就可以了. 后来百度了一段,发现还要用上Navigator,具体代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <t

win7系统下使用openCV调用摄像头问题

鄙人今日尝试使用openCV调用摄像头做图片中圆的圆心位置检测时,意外发现程序能成功调用笔记的集成摄像头,但却无法调用外接的USB摄像头.(使用的为OpenCV1.0 + VC6.0) 使用程序如下: #include"cv.h"#include"highgui.h"#include"cvcam.h"#include"iostream"using namespace std; int main(int argc,char* a

Unity 3D 调用摄像头捕获照片 录像

1,要想调用摄像头首先要打开摄像头驱动,如果用户允许则可以使用. 2,定义WebCamTexture的变量用于捕获单张照片. 3,连续捕获须启用线程. 实现代码: using UnityEngine; using System.Collections; using System.IO; using System.Runtime.Serialization; using System.Runtime .Serialization.Formatters.Binary; using System.Th