雷霆万钧 杜兰特

OpenCV中文網站

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 安裝 配置
查看: 3311|回復: 8
打印 上一主題 下一主題

如何實現正確率比較高的顏色識別

[復制鏈接]
跳轉到指定樓層
1#
發表于 2016-5-15 22:08:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近弄一個還原魔方的機器,但是顏色識別不太理想,主要是燈光影響太大,識別率并不高,也就60%-%70,波動比較大。我用的就是轉換成hsv進行卡值,就是大概在哪個范圍屬于哪個顏色的這種處理方法。有沒有更加智能一些的方法,求指教。能不能用一些機器學習的算法,來進行動態的學習。這一塊不是很懂,如果這方面可行的話,打算去學一下機器學習。
分享到:  QQ好友和群QQ好友和群
收藏收藏
回復

使用道具 舉報

2#
發表于 2016-5-15 22:39:50 | 只看該作者
本帖最后由 smallyouyou 于 2016-5-15 22:46 編輯

用類神經做看看,
這邊有基本的用法,
我還沒用過opencv這塊,
可能要研究一下,
只能先找了這個網址給你參考用法,
http://blog.csdn.net/xiaowei_cqu/article/details/9027617
然後下面是貝氏分類器的例子也可以做看看,
  1. #include "opencv2/opencv.hpp"
  2. #include "iostream"


  3. using namespace cv;
  4. using namespace std;

  5. double inputArr[10][13] =
  6. {
  7.   1,0.708333,1,1,-0.320755,-0.105023,-1,1,-0.419847,-1,-0.225806,0,1,
  8.   -1,0.583333,-1,0.333333,-0.603774,1,-1,1,0.358779,-1,-0.483871,0,-1,
  9.   1,0.166667,1,-0.333333,-0.433962,-0.383562,-1,-1,0.0687023,-1,-0.903226,-1,-1,
  10.   -1,0.458333,1,1,-0.358491,-0.374429,-1,-1,-0.480916,1,-0.935484,0,-0.333333,
  11.   -1,0.875,-1,-0.333333,-0.509434,-0.347032,-1,1,-0.236641,1,-0.935484,-1,-0.333333,
  12.   -1,0.5,1,1,-0.509434,-0.767123,-1,-1,0.0534351,-1,-0.870968,-1,-1,
  13.   1,0.125,1,0.333333,-0.320755,-0.406393,1,1,0.0839695,1,-0.806452,0,-0.333333,
  14.   1,0.25,1,1,-0.698113,-0.484018,-1,1,0.0839695,1,-0.612903,0,-0.333333,
  15.   1,0.291667,1,1,-0.132075,-0.237443,-1,1,0.51145,-1,-0.612903,0,0.333333,
  16.   1,0.416667,-1,1,0.0566038,0.283105,-1,1,0.267176,-1,0.290323,0,1
  17. };

  18. //一個測試樣本的特征向量
  19. double testArr[11][12]=
  20. {
  21.   0.125,1,0.333333,-0.320755,-0.406393,1,1,0.0839695,1,-0.806452,0,-0.333333,
  22.   0.708333,1,1,-0.320755,-0.105023,-1,1,-0.419847,-1,-0.225806,0,1,
  23.   0.583333,-1,0.333333,-0.603774,1,-1,1,0.358779,-1,-0.483871,0,-1,
  24.   0.166667,1,-0.333333,-0.433962,-0.383562,-1,-1,0.0687023,-1,-0.903226,-1,-1,
  25.   0.458333,1,1,-0.358491,-0.374429,-1,-1,-0.480916,1,-0.935484,0,-0.333333,
  26.   0.875,-1,-0.333333,-0.509434,-0.347032,-1,1,-0.236641,1,-0.935484,-1,-0.333333,
  27.   0.5,1,1,-0.509434,-0.767123,-1,-1,0.0534351,-1,-0.870968,-1,-1,
  28.   0.125,1,0.333333,-0.320755,-0.406393,1,1,0.0839695,1,-0.806452,0,-0.333333,
  29.   0.25,1,1,-0.698113,-0.484018,-1,1,0.0839695,1,-0.612903,0,-0.333333,
  30.   0.291667,1,1,-0.132075,-0.237443,-1,1,0.51145,-1,-0.612903,0,0.333333,
  31.   0.416667,-1,1,0.0566038,0.283105,-1,1,0.267176,-1,0.290323,0,1
  32. };


  33. int main()
  34. {
  35.   Mat trainData(10, 12, CV_32FC1);//構建訓練樣本的特征向量
  36.   for (int i=0; i<10; i++)
  37.   {
  38.     for (int j=0; j<12; j++)
  39.     {
  40.       trainData.at<float>(i, j) = inputArr[i][j+1];
  41.     }
  42.   }

  43.   Mat trainResponse(10, 1, CV_32FC1);//構建訓練樣本的類別標簽
  44.   for (int i=0; i<10; i++)
  45.   {
  46.     trainResponse.at<float>(i, 0) = inputArr[i][0];
  47.   }

  48.   CvNormalBayesClassifier nbc;
  49.   bool trainFlag = nbc.train(trainData, trainResponse);//進行貝葉斯分類器訓練
  50.   if (trainFlag)
  51.   {
  52.     cout<<"train over..."<<endl;
  53.     nbc.save("d:/normalBayes.txt");
  54.   }
  55.   else
  56.   {
  57.     cout<<"train error..."<<endl;
  58.     system("pause");
  59.     exit(-1);
  60.   }


  61.   CvNormalBayesClassifier testNbc;
  62.   testNbc.load("d:/normalBayes.txt");

  63.   Mat testSample(1, 12, CV_32FC1);//構建測試樣本
  64.   for (int i=0; i<11; i++)
  65.   {
  66.     for (int j=0; j<12; j++)
  67.     {
  68.       testSample.at<float>(0, j) = testArr[i][j];
  69.     }
  70.     float flag = testNbc.predict(testSample);//進行測試
  71.     cout<<"flag = "<<flag<<endl;
  72.   }



  73.   system("pause");
  74.   return 0;
  75. }
復制代碼



回復 支持 反對

使用道具 舉報

3#
 樓主| 發表于 2016-5-15 22:44:49 | 只看該作者
smallyouyou 發表于 2016-5-15 22:39
用類神經做看看,
這邊有基本的用法,
我還沒用過opencv這塊,

謝謝提供信息,我看看。
回復 支持 反對

使用道具 舉報

4#
發表于 2016-5-15 23:36:02 | 只看該作者
hsv好像還YCrCb的區分度好
回復 支持 反對

使用道具 舉報

5#
 樓主| 發表于 2016-6-12 09:51:38 | 只看該作者
最后用了svm效果相當好。謝謝各位了
回復 支持 反對

使用道具 舉報

6#
發表于 2016-7-2 07:51:04 | 只看該作者
SVM是什么東東啊樓主
回復 支持 反對

使用道具 舉報

7#
發表于 2016-10-20 10:48:19 | 只看該作者
xywhnh 發表于 2016-7-2 07:51
SVM是什么東東啊樓主

支持向量機算法,比較經典了
回復 支持 反對

使用道具 舉報

8#
發表于 2016-10-27 15:38:07 | 只看該作者
請問一下,你說的用SVM識別顏色的具體實現步驟是怎樣的啊?我也用HSV實現了顏色的識別,但是效果也是不是很理想
回復 支持 反對

使用道具 舉報

9#
發表于 2019-6-3 08:23:42 | 只看該作者
請問對于顏色的識別而言有沒有什么識別更好的算法呢
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|OpenCV中文網站  

GMT+8, 2019-10-23 22:04 , Processed in 0.045201 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
雷霆万钧 杜兰特