zoukankan      html  css  js  c++  java
  • opencv学习之路(6):图像相似颜色的查找

    相似颜色的查找

    #include <iostream>
    #include "opencv2/opencv.hpp"
    #include <math.h>
    using namespace std;
    cv::Vec3b target;
    int minDist;
    int getDistance(const cv::Vec3b &color)
    {
        return abs(color[0]-target[0])+
                abs(color[1]-target[1])+
                abs(color[2]-target[2]);
    }
    void setTargetColor(cv::Vec3b color){
        target=color;
    }
    void setTargetColor(uchar Red,uchar Green,uchar Blue)
    {
        target[2]=Red;
        target[1]=Green;
        target[0]=Blue;
    }
    void process(cv::Mat &image,cv::Mat &result)
    {
        result.create(image.rows,image.cols,image.type());
        cv::MatIterator_<cv::Vec3b> itbegin=image.begin<cv::Vec3b>();
        cv::MatIterator_<cv::Vec3b> itend=image.end<cv::Vec3b>();
        cv::MatIterator_<cv::Vec3b> out= result.begin<cv::Vec3b>();
        int ipixelcount=0;
        for(;itbegin!=itend;itbegin++,out++)
        {
            if(getDistance(*itbegin)<minDist)
            {
                (*out)[0]=0xff;
                (*out)[1]=0xff;
                (*out)[2]=0xff;
            }
            else
            {
                *out=0;
            }
            ipixelcount++;
        }
        cout<<"size vec3b"<<sizeof(*out)<<endl;
        cout<<ipixelcount<<endl;
    }
    int main()
    {
        cv::Mat image=cv::imread("E:/QtMaterial/images/boldt.jpg");
        minDist=100;
        cv::Mat result;
        setTargetColor(130,190,230);
        process(image,result);
        cv::namedWindow("SetColor");
        cv::imshow("SetColor",result);
        cv::imshow("Origin",image);
        cv::waitKey();
        return 0;
    }
  • 相关阅读:
    提示“此Flash Player与您的地区不相容,请重新安装Flash”的解决办法
    python中安装并使用redis
    linux安装flash player来播放视频
    安装redis
    centos6.5安装无线网卡驱动并配置wifi
    centos安装java的jdk
    001-python简介
    源码
    进程间通信之综述
    图的概念
  • 原文地址:https://www.cnblogs.com/Jason-AnHui/p/3474855.html
Copyright © 2011-2022 走看看