标题:
飞思卡尔小车摄像头组图像识别程序
[打印本页]
作者:
jn19980605
时间:
2018-12-15 16:48
标题:
飞思卡尔小车摄像头组图像识别程序
包含图像二值化
单片机源程序如下:
/*!
* COPYRIGHT NOTICE
* Copyright (c) 2013,山外科技
*
* 除注明出处外,以下所有内容版权均属山外科技所有,未经允许,不得用于商业用途,
* 修改内容时必须保留山外科技的版权声明。
*
* @file main.c
* @brief 山外K60 UD版平台主程序
* @author 山外科技
* @version v6.0
* @date 2016-09-25
*/
#include "include.h"
#include "motor.h"
#include "camera.h"
#include "servo.h"
#include "image_process.h"
#include "menu.h"
#include "flash.h"
#include "ultrasonic.h"
#include "switch.h"
#include "bluetooth.h"
#include "isr.h"
uint8 cnt;
#if defined CAR_1
#define VSYNC_ PTD17
#define HREF_ PTD16
#define PCLK_ PTD18
#endif
/*
#if defined CAR_2
#define VSYNC_ PTC17 //PTD14
#define HREF_ PTC16 //PTD13
#define PCLK_ PTC18 //PTD12
#endif
*/
volatile Image gImage;//(60,10)
//! 初始化摄像头
inline static void CameraInit()
{
IICWriteGpio_inintOV();//初始化设置SCCB引脚
while (ov7725_probe() == 0)//初始化寄存器
;
ov7725_set_image_size(IMAGE_SIZE);//设置图像大小
CameraSetImageBuffer(gImage);
CameraInterruptInit();//中断初始化
}
//! 拨码开关的值
volatile float switch_val = 0;
typedef void (*func_t)(void);
volatile
float k, b;
float SpeedDiffCoeff2(float servoduty)
{
return k / 1000 * fabsf(servoduty) + b;
}
void PortEHandler(void)
{
PORT_FUNC(E, 27, nrf_handler);
}
void main()
{
SwitchInit();
switch_val = GetSwitchValue();
led_init(LED0);
led_init(LED1);
led_init(LED2);
led_init(LED3);
// switch ((int)switch_val)
// {
// case 0:
// break;
// case 1:
// ((func_t)(80 * 0x400 + 0x411))();
// break;
// case 2:
// ((func_t)(150 * 0x400 + 0x411))();
// break;
// default:
// break;
// }
// while(!nrf_init()) //初始化NRF24L01+ ,等待初始化成功为止
// {
// led(LED0, LED_ON);
// }
led(LED0, LED_OFF);
set_vector_handler(PORTE_VECTORn, PortEHandler);
NVIC_EnableIRQ(PORTE_IRQn);
led(LED0, LED_OFF);
led(LED1, LED_OFF);
led(LED2, LED_OFF);
led(LED3, LED_OFF);
//LoadFlashData(switch_val);
SpeedCountInit();//编码器速度
OLED_Init();
CameraInit();
ServoInit();
MotorInit();
MenuInterruptInit();
// BluetoothInit();
enable_irq(DMA4_IRQn);
CameraGetImage(gImage);
for (;;)
{
CameraWait();
ExtractArray(imgbuff, (uint8_t const (*)[10])gImage);//得到bool型(60,80)型数组imgbuff
CameraGetImage(gImage);
ImageProcess(imgbuff);//图像处理
//SpeedControl();
//if(cnt==0)
// roundabout0();
//if(cnt==1)
// roundabout1();
//if(cnt==2)
//roundabout2();
ServoControl();
motor_run();
if (gMenuQueryImage)//菜单oled??
{
memcpy(gOledImageBuffer, gImage, DATALINE * DATACOUNT);
gMenuQueryImage = 0;
}
#if 1
//BluetoothSend();
#else
/* pid debugging code */
int16_t iSpeedL = speed_l;
int16_t iSpeedR = speed_r;
uart_putchar(UART0, 0x03);
uart_putchar(UART0, 0xFC);
uart_putbuff(UART0, (void *)&iSpeedL, sizeof iSpeedL);
uart_putbuff(UART0, (void *)&iSpeedR, sizeof iSpeedR);
uart_putchar(UART0, 0xFC);
uart_putchar(UART0, 0x03);
#endif
}
}
复制代码
所有资料51hei提供下载:
可跑1.1.7z
(1013.65 KB, 下载次数: 65)
2018-12-15 17:23 上传
点击文件名下载附件
摄像头识别
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1