前言

项目车号识别过程中,车体有三种颜色黑车黑底白字、红车红底白字、绿车黄底绿字,可以通过判断车体的颜色信息,从而判断二值化是否需要反转,主要是基于rgb2hsv函数进行不同颜色的阈值判断。

MATLAB代码如下:

% /************************************************************************
% * Copyright(c) 2017 ZRJ
% * All rights reserved.
% *
% * File: isGreen.m
% * Brief: 车号区域颜色信息判断算法
% * Version: 1.0
% * Author: ZRJ
% * Email: happyamyhope@163.com
% * Date: 2017/03/28
% * Reference:
% * History:
% * 20170328:得到ROI的颜色信息;
%
% ************************************************************************/
function [ ] = isGreen( )
%程序功能:车号区域颜色信息判断算法;
%输入input:
% roi -- roi color image;
%输出output:
% flip -- flip flag; roi = 'E:\carriage_recognition\train_identification\ROI1095\';
roi_path = [roi,'ROI原图\'];
roi_format = '*.png';
roi_list = dir(strcat(roi_path, roi_format));
roi_num = length(roi_list);%获取图像总数量 for num = 1 : roi_num %逐一读取图像
% num
close all
% HSV颜色信息提取
% roi_name = roi_list(num).name;% 图像名
% roi_image = imread(strcat(roi_path, roi_name));%读取图像
roi_name = [int2str(num), '_number_ROI.png'];
roi_image = imread([roi_path, roi_name]);
%RGB2HSV of ROI
hsv_f = rgb2hsv(roi_image);
H = hsv_f(:,:,1)*180;
S = hsv_f(:,:,2)*255;
V = hsv_f(:,:,3)*255;
[y,x,z]=size(roi_image);
green = 0;
yellow = 0;
for i=1:y
for j=1:x
if(((H(i,j)>=40)&&(H(i,j)<=75)) && (S(i,j)>=60)&&(S(i,j)<=255) && (V(i,j)>=55)&&(V(i,j)<=255))
green = green + 1;%绿像素点统计
elseif(((H(i,j)>=27)&&(H(i,j,1)<=33)) &&(S(i,j)>=60)&&(S(i,j)<=255) && (V(i,j)>=80)&&(V(i,j)<=255))
yellow = yellow + 1;%黄像素点统计
end
end
end ss = x * y;
ratio_g = green *100/ ss;
ratio = (green + yellow) *100/ ss;
flip = 0;
if( ratio > 0.04 && ratio_g > 0.0004 )
flip = 1;
end if ( flip )
bw_name = [roi_name(1: end-4), '_flip'];
imwrite(roi_image, [roi, 'green\', bw_name,'.png']);
end end % end for end % end function

问题总结:

1.注意不同颜色H/S/V的范围,可以根据实际情况设置;

2.matlab自带的rgb2hsv函数的输出范围是[0 1];

3.判断是否反转的阈值需要根据具体的情况进行设定;

判断颜色信息-RGB2HSV的更多相关文章

  1. 判断颜色信息-RGB2HSV(opencv)

    前言 项目车号识别过程中,车体有三种颜色黑车黑底白字.红车红底白字.绿车黄底绿字,可以通过判断车体的颜色信息,从而判断二值化是否需要反转,主要是基于rgb2hsv函数进行不同颜色的阈值判断. matl ...

  2. .NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度

    .NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度   随机颜色在日常开发中很常用到,有时候要控制颜色明亮度,比如在白色背景网页上的随机颜色,一般要求颜色稍微暗一 ...

  3. JAVASCRIPT和JQUERY判断浏览器信息总汇(备忘)

    <script type="text/javascript">        //jquery判断浏览器信息        $(function(){          ...

  4. JS 通过 navigator获取判断浏览器信息

    获取浏览器信息需要使用navigator.userAgent 对象 根据获取到的内容判断浏览器信息 亲身测试 navigator.userAgent IE 11  Mozilla/5.0 (Windo ...

  5. 提取bmp图片的颜色信息,可直接framebuffer显示(c版本与python版本)

    稍微了解了下linux的framebuffer,这是一种很简单的显示接口,直接写入像素信息即可 配置好的内核,会有/dev/fbn 的接口,于是想能否提前生成一个文件,比如logo.fb,里面仅包含像 ...

  6. python脚本实例001 - 通过列表内容判断输入输出信息

    要点总结: 输入输出方法,input().print()方法 list列表应用,list是一种有序的集合,可以随时添加和删除其中的元素. 条件语句if-else应用 #! /usr/bin/pytho ...

  7. js判断设备信息,安卓、ios、还是pc端

    前端开发获取设备信息的代码if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { window.location.href =" ...

  8. 00ff00 颜色信息

    RGB 0, 255, 0 百分比 0.0%, 100.0%, 0.0% 十六进制 00ff00 十进制 65280 二进制 00000000,11111111,00000000 CMYK 100.0 ...

  9. 74859a颜色信息

    74859a十进制的RGB值为R:116, G:133, B:154. CMYK值为C:24.675, M:13.636, Y: 0.0, K: 39.608 RGB 116, 133, 154 百分 ...

随机推荐

  1. WCF 客户端调用服务操作的两种方法

    本节的主要内容:1.通过代理类的方式调用服务操作.2.通过通道的方式调用服务操作.3.代码下载 一.通过代理类的方式调用服务操作(两种方式添加代理类) 1.手动编写代理类,如下: 客户端契约: usi ...

  2. ubuntu下xx-net可用IP为0, ping6显示 Network is unreachable

    不知和xx-net有没有关系. 全新安装系统 sudo apt-get install miredo 这时, ping6 ipv6.google.com 是能ping通的 按github上依次安装py ...

  3. URAL 2072 Kirill the Gardener 3

    URAL 2072 思路: dp+离散化 由于湿度的范围很大,所以将湿度离散化 可以证明,先到一种湿度的最左端或者最右端,然后结束于最右端或最左端最优,因为如果结束于中间,肯定有重复走的路 状态:dp ...

  4. Codeforces 834C - The Meaningless Game

    834C - The Meaningless Game 数学. 思路1:判断a•b能不能化成v3且a%v==0且b%v==0.v可以直接用pow求(或者用cbrt),也可以二分求:还可以用map映射预 ...

  5. Unity项目中显示项目的FPS

    using UnityEngine; using System.Collections; public class ShowFpsOnGUI : MonoBehaviour { public floa ...

  6. C#异常信息获取

    try { ; / i; } catch (Exception ex) { /** * 1.异常消息 * 2.异常模块名称 * 3.异常方法名称 * 4.异常行号 */ String str = &q ...

  7. LeetCode--028--实现strSTR()

    问题描述: 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返回  -1. 示例 ...

  8. Fair CodeForces - 987D (bfs)

    链接 大意:给定无向图边权均为1, 每个节点有一种货物, 对于每个节点, 求出拿到$s$种不同货物的最短距离 (每种货物独立计算,并且不用返回) 因为$s$较小, 直接枚举每种货物即可 所以问题就转化 ...

  9. OC 类的本质和分类

    一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件结构图: 在分类中添加一 ...

  10. 使用kubeadm安装Kubernetes v1.10

    关于K8S: Kubernetes是Google开源的容器集群管理系统.它构建于docker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩 容缩容等整一套功能,本质上可看作是基于容器技术 ...