资源简介
里面有Pixy源码,同时有一个main文件,是将Pixy的方法移植到HSV空间了,效果还可以,可以作为参考~
代码片段和文件信息
#include
#include
using namespace std;
using namespace cv;
const char* windows1 = “rgb“;
const char* windows2 = “dst“;
const char* windowsp = “parameter“;
Mat rgb; // 原始图像
Rect rect; // 选中的区域
bool have = false; // 是否进行了学习
float m_ratio = 0.8; // 选中区域的hs通道大于百分之多少算好
struct ColorSignature
{
ColorSignature()
{
m_uMin = m_uMax = m_uMean = m_vMin = m_vMax = m_vMean = m_type = 0;
}
int m_uMin;
int m_uMax;
int m_uMean;
int m_vMin;
int m_vMax;
int m_vMean;
int m_rgb;
int m_type;
}sig;
void calcRatios8(Mat& uu Mat& vv struct ColorSignature *sig float ratios[])
{
int n = 0 counts[4];
counts[0] = counts[1] = counts[2] = counts[3] = 0;
for (int i = 0; i {
for (int j = 0; j {
uchar m_u = uu.ptr(i)[j];
uchar m_v = vv.ptr(i)[j];
if (m_u>sig->m_uMin)
counts[0]++;
if (m_um_uMax)
counts[1]++;
if (m_v>sig->m_vMin)
counts[2]++;
if (m_vm_vMax)
counts[3]++;
n++;
}
}
// calc ratios
ratios[0] = (float)counts[0] / n;
ratios[1] = (float)counts[1] / n;
ratios[2] = (float)counts[2] / n;
ratios[3] = (float)counts[3] / n;
// calc mean (because it‘s cheap to do it here)
sig->m_uMean = (sig->m_uMin + sig->m_uMax) / 2;
sig->m_vMean = (sig->m_vMin + sig->m_vMax) / 2;
}
Mat HSVGet(Mat& rgb)
{
Mat m_hsv;
// 先转换为YUV格式
cvtColor(rgb m_hsv cv::COLOR_BGR2HSV);
// 通道分离
vector splits;
split(m_hsv splits);
//// 对每个通道进行处理
int scale = 0;
float ratios[4];
// 取得hs的上下限
for (scale = 1 << 7 sig.m_uMin = sig.m_uMax = sig.m_vMin = sig.m_vMax = 0; scale != 0; scale >>= 1)
{
calcRatios8(splits[0] splits[1] &sig ratios);
if (ratios[0]>m_ratio)
sig.m_uMin += scale;
else
sig.m_uMin -= scale;
if (ratios[1]>m_ratio)
sig.m_uMax -= scale;
else
sig.m_uMax += scale;
if (ratios[2]>m_ratio)
sig.m_vMin += scale;
else
sig.m_vMin -= scale;
if (ratios[3]>m_ratio)
sig.m_vMax -= scale;
else
sig.m_vMax += scale;
}
int range = 2.5;
sig.m_uMin = sig.m_uMean + (sig.m_uMin - sig.m_uMean)*range;
sig.m_uMax = sig.m_uMean + (sig.m_uMax - sig.m_uMean)*range;
range = 3.5;
sig.m_vMin = sig.m_vMean + (sig.m_vMin - sig.m_vMean)*range;
sig.m_vMax = sig.m_vMean + (sig.m_vMax - sig.m_vMean)*range;
have = true;
return Mat();
}
Mat HSVUpdate(Mat& rgb)
{
Mat m_yuv;
Mat m_ret;
// 先转换为YUV格式
cvtColor(rgb m_yuv cv::COLOR_BGR2HSV);
// 通道分离
vector splits;
split(m_yuv splits);
Mat imgh imgs;
inRange(splits[0] Scalar::all(sig.m_uMin) Scalar::all(sig.m_uMax) imgh);
inRange(splits[1] Scalar::all(sig.m_vMin) Scalar::all(sig.m_vMax) imgs);
cv::bitwise_and(imgh imgs m_ret);
return m_ret;
}
void onMouse(int event int x int y int flags void *ustc)
{
static Point pre_pt(-1 -1);
static Point cur_pt(-1 -1);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4664 2017-02-01 16:56 main.c
....... 66 2015-12-01 06:22 pixy-master源代码\.gitignore
....... 158647 2015-12-01 06:22 pixy-master源代码\contributors.txt
....... 101934 2015-12-01 06:22 pixy-master源代码\doc\Doxyfile
....... 13769 2015-12-01 06:22 pixy-master源代码\doc\images\Pixy01-21-136x76.png
....... 11321 2015-12-01 06:22 pixy-master源代码\doc\images\Pixy01-21-300x168.jpg
....... 2726 2015-12-01 06:22 pixy-master源代码\doc\images\Pixy01-21-89x50.jpg
....... 511 2015-12-01 06:22 pixy-master源代码\license.txt
....... 5309 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 36420 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 36695 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 56800 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 1 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 1 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 42 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 42 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 42 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 143 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 42 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 58 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 58 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 58 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 58 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 751 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 3684 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 42 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 224 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 87 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 257 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
....... 26 2015-12-01 06:22 pixy-master源代码\misc\gcc\.me
............此处省略1048个文件信息
相关资源
- 基于颜色识别的火焰检测算法的open
- 2017 电赛 滚球控制系统源代码(PIX
- stm32陀螺仪,颜色识别抓球小车.zip
- 2017全国电子设计大赛滚球控制系统程
- AnkhSVN 2.7.0.6493msi 支持vs2015
- 颜色识别程序stm32f103使用tcs3200含上位
- OV7725颜色识别
- 颜色识别及定位
- 车辆检测基础-红色车辆检测
- stm32+ov7670+颜色识别追踪
- AnkhSvn-2.6.12806.20官网最新版本2018-03-
- TCS3200通过串口查看颜色识别结果带接
- 基于STM32F407和OV5640的视觉算法二维码
- pixy摄像头配套资料
- stm32的APDS9960颜色识别、舵机、电机
- OV7670摄像头多块颜色识别追踪并串口
- 颜色识别中各颜色阈值快速查找小程
- 图像识别模块Pixy资料--包括原理图-源
- 图像识别模块Pixy资料--包括原理图-源
- RGB图像处理+颜色识别
- 基于opencv颜色识别 - 图像(普通轮廓
- pixy 算法分析
- 基于颜色直方图的粒子滤波目标跟踪
- rgb hsv颜色转化识别软件
- OV7725摄像头液晶颜色识别
- TCS230颜色传感器源程序三原色识别
- RGB到HSV空间直方图均衡化 opencv
- 基于openmv和舵机机械臂的物料颜色识
- macOS High Sierra 10.13.6 by Techsviewer
- pixy硬件电路设计图纸
评论
共有 条评论