Re: [問題] 新手發問-計算像素點數
※ 引述《luandrew (阿咪)》之銘言:
: 這樣顯示出來的黑點跟白點數字好怪
: 好相近..是哪裡出錯了?
: 要在哪裡加質心公式?
老實說吧, 看起來顯然您不太會寫程式....
就看您照搬學姐那兩行就知道....
您不懂學姐程式的邏輯, 也不懂您搬了什麼....
==
#define WIDTH 8
#define HEIGHT 6
int gray[HEIGHT][WIDTH] =
{
{0, 0, 0, 0, 1, 1, 0, 0, },
{0, 0, 0, 0, 1, 1, 1, 0, },
{1, 1, 1, 1, 1, 1, 1, 1, },
{1, 1, 1, 1, 1, 1, 1, 1, },
{0, 0, 0, 0, 1, 1, 1, 0, },
{0, 0, 0, 0, 1, 1, 0, 0, },
}
請問您, 有沒有辦法寫一個簡單的程式統計上面gray陣列有幾個0有幾個1??
上面這個sample裡, 您需要懂得基本對二維陣列依序存取....
您需要懂得巢狀迴圈的使用, 您需要懂得做條件判斷....
當然, 變數宣告, 給值, ++, 等等更基本的東西更是不用說了....
如果上面這些都懂而且會寫, 二值化基本上就不是什麼問題....
它也是"依序取值"->"判斷"->"該陣列元素的值"這樣的流程....
==
算黑區與白區的中心呢??這或許跟數學算三角形什麼的質心不太相同....
就直接寫個例子吧, 先決條件是我這邊寫的質心沒有誤解您要求的東西....
0 0 1 1 0 0 0 0 假設最左上角那個位置為(0, 0)
0 0 1 1 0 0 0 0 右下角那點座標就會是(7, 1)
數字是 1 的區域中心點在哪??是不是把 1 的座標累加最後除以 1 的點數就好??
1: (2, 0), (3, 0), (2, 1), (3, 1) => 共 4 點
質心: ( (2+3 + 2+3) / 4, (0+1 + 0+1)/4 ) = (2.5, 0.5) 理由自己推吧
數字是 0 的區域中心點呢??是不是可以用類似的方法推算出來??
會推算了, 能夠把我一開始給的gray的 0 與 1 的質心分別找出來嗎??
這邊假設還不考慮 0 要分成左邊那區和右邊那區這個問題....
如果您也需要做到這點(忘了影像處理裡叫什麼了)
那小弟我覺得, 要在板上這樣慢慢教恐怕得花費相當大的功夫....
不如您自己去找本影像處理入門的書好好翻一翻學一學吧....
順代一提, 作標我寫(x, y), 可是陣列我用[y][x]的形式也是有理由的....
這可能是coding時影像處理常用的作法, 也是您用BCB6寫時可能碰到的....
==
如果您還是用BCB6開發程式, 就不要想有什麼元件可以做到您的需求....
BCB6原生提供給您的而您目前比較用得到的....
只有最主要的C/C++環境 - 讓您設計演算法實作您需要的功能
Window Form - 讓您快速的建立一個視窗, 甚至加些menu功能紐等....
還有TImage, TBitmap相關的元件 - 讓您簡單的顯示圖片在螢幕上與load/save圖檔
當然, 還有build code, debugger, help等等IDE通常都有的東西....
什麼情況下您可能找到現有的元件可以直接完成您要做的這些事情??
剛好網路上讓您找到有人寫過同樣/類似的作業剛好可以讓您"參考"....
再不然就是更明白了當的去找作業代寫, 甚至是code job板吧....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.41.17.189
→
06/15 22:52, , 1F
06/15 22:52, 1F
→
06/15 22:59, , 2F
06/15 22:59, 2F
→
06/15 22:59, , 3F
06/15 22:59, 3F
→
06/15 23:00, , 4F
06/15 23:00, 4F
→
06/15 23:17, , 5F
06/15 23:17, 5F
→
06/15 23:18, , 6F
06/15 23:18, 6F
→
06/15 23:18, , 7F
06/15 23:18, 7F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章