峠をひとつ
C#で、楽譜認識をするための五線譜認識をしている。
これに一年かかっている。
つらい。
今日は、夏休みから 科教協の旅行までの間にずっと悩んでいたところのうちの
ひとつを解決できた。旅行中まで、考え込んでいた。
一ヶ月半かかった。本当に今年度の修了は無理そうな気配。
でも、とにかく、今はうれしい。
下にコードを記述しよう。
//条件2を満たした直線のみ線を見せる。 //このとき、pk[k][XX]のXは、一番上の候補が無視されてかまわない。そもそもこの関数にくるときは、 //iやjは、!=0のときしかこないからである。 /*for ( int iCounter = (int)_GlobalConst.iVerticalCandidateAry[k-1]; iCounter < (int)_GlobalConst.iVerticalCandidateAry[k]; iCounter++ ) { y = (int)((double)_GlobalConst.Pk[k][i] + grad*(double)iCounter); if (iCounter >= 0 && iCounter < img.Width && y >= 0 && y < img.Height ) { if ( isCondition2 == true){ //条件2に適合した線 //img.setPixel(iCounter, y, Color.Red); //g.DrawLine(new Pen(Color.Blue), iCounter, y, iCounter+5, y+5); } } ; } */ double tempY; for( int iCounter = (int)_GlobalConst.iVerticalCandidateAry[k-1]; iCounter < (int)_GlobalConst.iVerticalCandidateAry[k];iCounter++ ) { y = (int)((double)_GlobalConst.Pk[k][i] + grad*(double)iCounter); if ( iCounter >= 0 && iCounter < img.Width && y >= 0 && y < img.Height ) { if( isCondition2 == true){ pLog.WriteLine("k-1={0}, i={1}, pk[k-1][i]={2}, pk[k+1][j]={3}", k - 1, i, _GlobalConst.Pk[k][i], _GlobalConst.Pk[k + 1][j]); //img.setPixel(iCounter, y, Color.Red); tempY = _GlobalConst.Pk[k][i] + grad * (int)_GlobalConst.iVerticalCandidateAry[k]; g.DrawLine( new Pen( Color.Red ), (int)_GlobalConst.iVerticalCandidateAry[k-1], (int)_GlobalConst.Pk[k][i], (int)_GlobalConst.iVerticalCandidateAry[k], //(int)_GlobalConst.Pk[k+1][j] (int)tempY ); } } }