opencv检测物体颜色
#include<opencv2/opencv.hpp>
#include<opencv2/opencv_modules.hpp>
#include<iostream>
#include<math.h> using namespace cv;
using namespace std;
Mat src, dst, binout, src_gray;
int Threshold = 140; void jdge_color(vector<int> colovec); int main() { //输入图像并转化为灰度
src = imread("E://2.png");
if (src.empty()) {
printf("src couldn't be loaded...");
return -1;
}
imshow("input", src); cvtColor(src, src_gray, COLOR_BGR2GRAY);
medianBlur(src_gray, src_gray, 21);
blur(src_gray, src_gray, Size(21, 21)); //设置阈值后执行CallBack()
namedWindow("output"); //createTrackbar("Threshold", "output", &Threshold, 255, CallBack);
//二值化
threshold(src_gray, binout, Threshold, 255, THRESH_BINARY);
//Canny(src_gray, binout, Threshold, Threshold * 2);
imshow("binary", binout);
//寻找边缘
vector<vector<Point>> contours;
vector<Vec4i> hierachy;
findContours(binout, contours, hierachy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0)); //得到矩形框相关参数
vector<vector<Point>> polies(contours.size());//减少后的多边形边缘上的点
vector<Rect> rects(contours.size());//矩形框 for (size_t i = 0; i < contours.size(); i++) {
approxPolyDP(Mat(contours[i]), polies[i], 3, true);//减少多边形边缘点
rects[i] = boundingRect(polies[i]);
} //绘制他们
Point2f pts[4];
for (size_t i = 0; i < contours.size(); i++) {
Mat matHsv;
Mat imgThresholded;
Scalar scalar;
Mat cut = src(rects[i]); cvtColor(cut, matHsv, COLOR_BGR2HSV);
imshow("hsv.jpg", matHsv);
scalar = cut.at<Vec3b>(cut.rows/2, cut.cols/2);
int a = (int)scalar.val[1];
rectangle(src, rects[i], Scalar(0,0,0), 2);//画矩形框
//mage_rect.push_back(src(rects[i]));
}
imshow("output", src); waitKey(0);
return 0;
}
注明:有部分代码来源于网络,如果是你写的,请留言让我注明一下原作者!
opencv检测物体颜色的更多相关文章
- python opencv 检测特定颜色
import cv2 import numpy as np cap = cv2.VideoCapture(0) # set blue thresh 设置HSV中蓝色.天蓝色范围 lower_blue ...
- [PyImageSearch] Ubuntu16.04 使用深度学习和OpenCV实现物体检测
上一篇博文中讲到如何用OpenCV实现物体分类,但是接下来这篇博文将会告诉你图片中物体的位置具体在哪里. 我们将会知道如何使用OpenCV‘s的dnn模块去加载一个预训练的物体检测网络,它能使得我们将 ...
- OpenCV 使用光流法检测物体运动
OpenCV 可以使用光流法检测物体运动,贴上代码以及效果. // opticalflow.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" ...
- R-FCN:基于区域的全卷积网络来检测物体
http://blog.csdn.net/shadow_guo/article/details/51767036 原文标题为“R-FCN: Object Detection via Region-ba ...
- 用 Python 和 OpenCV 检测图片上的条形码
用 Python 和 OpenCV 检测图片上的的条形码 这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问 ...
- 用 Python 和 OpenCV 检测图片上的条形码(转载)
原文地址:http://python.jobbole.com/80448/ 假设我们要检测下图中的条形码: # load the image and convert it to grayscale 1 ...
- OpenCV学习 物体检测 人脸识别 填充颜色
介绍 OpenCV是开源计算机视觉和机器学习库.包含成千上万优化过的算法.项目地址:http://opencv.org/about.html.官方文档:http://docs.opencv.org/m ...
- 【转】opencv检测运动物体的基础_特征提取
特征提取是计算机视觉和图像处理中的一个概念.它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征.特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点.连续的曲线或者连 ...
- (转)使用Python和OpenCV检测图像中的物体并将物体裁剪下来
原文链接:https://blog.csdn.net/liqiancao/article/details/55670749 介绍 硕士阶段的毕设是关于昆虫图像分类的,代码写到一半,上周五导师又给我新的 ...
- 惊!Python能够检测动态的物体颜色!
本篇文章将通过图片对比的方法检查视频中的动态物体,并将其中会动的物体定位用cv2矩形框圈出来.本次项目可用于树莓派或者单片机追踪做一些思路参考.寻找动态物体也可以用来监控是否有人进入房间等等场所的监控 ...
随机推荐
- docker mysql SQLSTATE[HY000] [2002] Connection refused
使用docker搭建lnmp环境,使用的是分容器的搭建方案 框架使用thinkphp,想要连接数据MySQL,一直显示"SQLSTATE[HY000] [2002] Connection r ...
- Delphi 使用API函数AnimateWindow实现窗体特效功能
API函数 AnimateWindow 使用: 函数功能:窗体显示和隐藏时产生特殊的动画效果:可以产生两种类型的动画效果: 滚动动画 和 滑动动画 函数原型:BOOL AnimateWindow(HW ...
- dxTabbedMDIManager1关闭窗体
procedure TfrmJianKongXinXi.FormClose(Sender: TObject; var Action: TCloseAction);begin Action:=caFre ...
- 【Python】配置pip使用国内镜像源
配置pip使用国内镜像源 零.问题 使用pip安装插件时总是很慢,咋解决呢? 壹.解决 在桌面上你的文件夹内新建pip目录,一般路径如下:C:\Users\{$你的用户名},比如我的用户名是Minuy ...
- 0x02 数据结构
目录 数据结构 链表与邻接表 单链表 双链表 栈与队列 单调栈与队列 KMP KMP算法 Trie字典树 并查集 朴素并查集 维护Size的并查集 维护到祖宗节点距离的并查集 堆 哈希表 拉链法 开放 ...
- 探秘Transformer系列之(24)--- KV Cache优化
探秘Transformer系列之(24)--- KV Cache优化 目录 探秘Transformer系列之(24)--- KV Cache优化 0x00 前言 0x01 背景知识 1.1 度量指标 ...
- vue2鼠标事件
1.单击 @click 2.按下 @mousedown 3.抬起 @mouseup 4.双击 @dblclick 5.移动 @mousemove 6.移除 @mouseout 7.离开 @mousel ...
- nohup启动jar包
1. 后台启动jar包,并追加日志到日志文件run.log nohup java -jar wash-1.0-SNAPSHOT.jar >> run.log 2>&1 &am ...
- C# 线程(四)——Task初始
一.相关介绍 .NetFramework3.0时代实现,C#中多线程.异步编程最佳实践,特点: 1.所有的Task操作的线程来自线程池,避免了频繁的线程创建及销毁 2.含有丰富的Api,能满足我们在开 ...
- MySQL的基本语法(增,删,改,查)
MySQL的基本语法(增,删,改,查) MySQL中的(增)操作 创建数据库 CREATE DATABASE 库名; 例如: CREATE DATABASE db; 创建一个名为db的数据库. 创建列 ...