2014-08-29 544 views
3

我已經使用OpenCV編寫了一個C++程序,可以檢測並突出顯示實況視頻中任何對象的邊緣。但是現在我不知道如何從視頻中檢測到的許多邊緣提取立方體的四角。所以我在這裏尋找一些幫助。使用Opencv讀取魔方的顏色

以下是我用作此項目指南的論文鏈接。 http://www.cs.ubc.ca/~andrejk/525project/525report.pdf 您可以在下面的鏈接中找到本文的程序代碼。它是用Python編寫的。 (我正在使用C++,我不知道Python) http://www.cs.ubc.ca/~andrejk/525project/cubefinder.py

根據論文,下一步將是'具有自適應閾值的邊緣分割'。 我真的不明白。而且我也不知道如何提取立方體的角落。

我使用的方法的簡短摘要如下。 1.網絡攝像頭輸入 2.應用拉普拉斯濾波器 3.應用霍夫線變換。

我收到以下結果。

Result

代碼

using namespace std; 
using namespace cv; 

Mat laplacianFilter(Mat image) 
{ 
Mat hImage; 

GaussianBlur(image,hImage,Size(3,3),0,0,BORDER_DEFAULT); 
cvtColor(hImage,hImage,CV_RGB2GRAY); 
Laplacian(hImage,hImage,CV_16SC1,3,1,0,BORDER_DEFAULT); 
convertScaleAbs(hImage,hImage,1,0); 

return hImage; 
} 

Mat hghTransform(Mat image, Mat &image2) 
{ 
Mat lImage; 

Canny(image,image,50,200,3); 
cvtColor(image,lImage,CV_GRAY2BGR); 

    vector<Vec4i> lines; 
    HoughLinesP(image, lines, 1, CV_PI/180, 50, 50, 10); 
    for(size_t i = 0; i < lines.size(); i++) 
    { 
     Vec4i l = lines[i]; 
     line(image2, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,255,0), 3, CV_AA); 
    } 

return lImage; 
} 


int main() 
{ 
int c; 

VideoCapture cap(0); 

Mat image; 
Mat image2; 

namedWindow("hghtransform"); 
namedWindow("laplacianfilter"); 
namedWindow("cannyOutput"); 

while(1) 
{ 
    cap>>image; 
    cap>>image2; 

    //Output 
    imshow("laplacianfilter",laplacianFilter(image)); 
    imshow("cannyOutput",hghTransform(laplacianFilter(image),image2)); 
    imshow("hghtransform",image2); 

    c=waitKey(33); 

    if(c==27) 
     return 0; 

} 

return 0; 
} 
+0

Python與C++非常相似,所以我猜你應該沒問題。如果有的話,這簡單得多。它使用縮進而不是'{}'。這可能是真正重要的一切。 – 2014-08-29 08:06:50

回答

1

自適應閾值會給你邊的一條清晰的界限,使您得到一個魔方側的9個方格正常。

這裏你可以看到全局和自適應閾值的一個體面的比較:
這裏:https://sites.google.com/site/qingzongtseng/adaptivethreshold

原始圖像:
enter image description here

全局閾值:
enter image description here

自適應閾值:
enter image description here

對於迫在眉睫,我不知道它是否在該文件中指出,但我會做這樣的事情:
==>尋找像1區,234upper-leftupper-rightlower-left,並lower-right角落分別爲
==>與模板匹配算法。
enter image description here

希望它有幫助。

注意:您可能希望有一個背景噪音較少。 =)