先上兩張圖。魔方是菲神創紀錄時用的品牌gan,花了我六十幾rmb,手感果然和十幾塊錢的妖豔賤貨不一樣。
首先我想到的就是先邊緣檢測,然後開始遍歷,找到坐上角的點和右下角的點,然後就可以算出中點。這麼簡單,想想還有點小激動呢。
point find_heart(mat src) /*找到魔方的中心點*/
} if (dst.at(i, y1) == 255)
}for (int i = dst.cols-10 ; i > 0.5*dst.cols;i--)
}if (dst.at(i, y2) == 255)
}return point((x1 + x2) / 2, (y1 + y2) / 2);
}
**如上,由於比較菜和剛接觸opencv,就這段**就除錯了很很多次。遇到的問題和解決方法記一下:
1.訪問畫素點的值。灰度圖用image.at(x,y)就行了,bgr三通道訪問每乙個通道的話用image.at[1或2或3]分別訪問三個通道的值。
2.不知道我怎麼得出來的乙個結論,如果影象過大,用imshow("",1)顯示不完全的話,後面從右下角(image.coles,image.cows)開始遍歷的話會導致溢位而報錯,天知道我是試了多少次才發現。
3.跳出兩個迴圈,用了兩個break而沒用goto,不知道是哪個老師給我說過,千萬不要輕易的用goto。
後面又查了點資料,發現用指標遍歷更好,所以我改了一下這個**。
#include #include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include#include
using namespace cv;
using namespace std;
point find_heart(mat src);
int main()
point find_heart(mat src) /*找到魔方的中心點*/
} if (data[x1] == 255)
}for (int j = int (dst.rows-1);j > int(dst.rows*0.5);j = j - 11) //找到右下角的座標並儲存到(x2,y2)
}if (data[x2] == 255)
}return point((x1 + x2) / 2, (y1 + y2) / 2); //返回魔方中點的值
}
改過後看起來就要好一點了,有一點誤差,但是在我的接受範圍內,我就不想繼續改了。
今天先寫到這(第一次用這個,感覺有點不好用是怎麼回事),就當開始了我的部落格之旅。俗話說:萬事開頭難,中間難,結尾難。噫噓唏!為了早日成為一名合格的老司機,下午還要去練車(對了,順便恭喜我昨天滿分通過科二)。
centerloss之中心點計算
以minist為例 中心點有2種計算方式 方式1 人算 批次取400,平均每批次每個數字有400 10 40個點,如果取40個點的中心為每批次訓練的中心,資料太少,誤差大,所以先定義乙個佇列,佇列長度為400 20,前20個週期不訓練中心損失,只訓練分類損失,把每批次網路計算的點 形狀為 400,2...
計算旋轉中心點座標
記旋轉角為 和 計算採用弧度制 作用 將數值浮點到8位小數 const parsenumber num 抽象成如下數學模型 已知圓上任意一點座標a x,y 過該點的直徑與x負軸的夾角為 半徑r,求圓心座標 target是乙個json物件,裡邊包含長寬 旋轉角 位置等資訊if target objec...
三階魔方中心塊亂了 高階魔方學習歷程
來自我的學生魔方小子 最近學習了一段時間的高階魔方,包括四階魔方 五魔方和五階魔方。一開始,四階魔方學習起來比較困難,中心塊和稜塊都比較難拼,但是當觀察熟練之後,中心塊和稜塊又比較好拼了,拼好了中心塊和稜塊之後,就剩下頂層的o特公式和p特公式,o特公式和p特公式難在o特公式,但是用口訣三上三下上下下...