C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■54644  Re[1]: [至急]助けてください!!
□投稿者/ ふるふる -(2010/10/28(Thu) 11:59:53)
    No54632 (ああああ さん) に返信

    書き方が悪いです。ダウンロードさせる、というのはウイルスかも知れないと思われるのでいきなり出すのは不信感があります。
    質問したいことを良く考えてから投稿されてはいかがですか。

    他のスレッドで普通に回答されていたので業者じゃないとわかりますが、この書き方では業者だと間違えられても仕方が無いと思います。

    掲示板は、多数の人が見ているものです。情報共有の場所であり、報酬も払う気があるのでしたら、
    仕事仲介マーケットサイト(Lancersとかのような)で頼んだ方がいいかも。

記事No.54632 のレス /過去ログ91より / 関連記事表示
削除チェック/

■54643  Re[3]: Re: リッチテキストボックスに貼り付けすると、半角数字が消える
□投稿者/ 魔界の仮面弁士 -(2010/10/28(Thu) 11:57:02)
    2010/10/28(Thu) 12:01:14 編集(投稿者)

    No54607 (hiro さん) に返信
    > 文字化けを起こさず、リッチテキストボックスに受け入れさせる方法を調べてみることにします。

    クリップボードの内容を加工する方向で考えてみました。

    RichTextBox に貼り付ける直前に、下記の処理を呼び出しておくと、
    今回の現象(半角数字の欠損)がおきなくなると思います。

    ――どのタイミングで呼び出すべきかが悩ましいところですが。


    Public Sub FixRTF()
    Dim baseData As IDataObject = Clipboard.GetDataObject()
    If Not baseData.GetDataPresent(DataFormats.Rtf) Then
    Return
    End If

    Dim oldRTF As String = baseData.GetData(DataFormats.Rtf).ToString()
    Dim newRTF As String = System.Text.RegularExpressions.Regex.Replace( _
    oldRTF, "(?<uc>\\uc\d)(?<num>\d)", "${uc}{}${num}")
    If newRTF <> oldRTF Then
    'Debug.Print(newRTF)
    Dim cloneData As New DataObject()
    For Each fmt As String In baseData.GetFormats(False)
    If fmt = DataFormats.Rtf Then
    cloneData.SetData(DataFormats.Rtf, newRTF)
    Else
    cloneData.SetData(fmt, baseData.GetData(fmt, False))
    End If
    Next
    'Clipboard.Clear()
    Clipboard.SetDataObject(cloneData, True)
    End If
    End Sub
記事No.54599 のレス /過去ログ92より / 関連記事表示
削除チェック/

■67932  Re[4]: サーバーからのエラーメールの受信先の変更
□投稿者/ redhat -(2013/09/10(Tue) 23:30:19)
    > 手元に環境が無いので確認できませんが、MailMessage に対して
    > msg.From = New System.Net.Mail.MailAddress("sender@example.com")
    > msg.Sender = New System.Net.Mail.MailAddress("return@example.com")
    > だとどうでしょうか。

    ご指導通りにやってみました。
    無事に思い通りの事ができました。
    魔界の仮面弁士さん、親切&丁寧に教えて下さり本当にありがとうございました!
記事No.67927 のレス / END /過去ログ115より / 関連記事表示
削除チェック/

■88234  拡大された画像をカウントする
□投稿者/ マッチ -(2018/08/10(Fri) 20:37:53)

    分類:[C#] 

    C#を使ってテンプレートマッチングの練習をしております。

    このメソッドを使えばBitmapの中にある等倍の画像を検索することができるのですが、

    public bool IsEqualBitmap(Bitmap bitmapTarget, Bitmap bitmapImage, int nTargetX, int nTargetY)
    {
    if((nTargetX + bitmapTarget.Width) > bitmapImage.Width)
    {
    return false;
    }

    if((nTargetY + bitmapTarget.Height) > bitmapImage.Height)
    {
    return false;
    }

    for (int nY = 0; nY < bitmapTarget.Height; nY++)
    {
    for (int nX = 0; nX < bitmapTarget.Width; nX++)
    {
    Color colorTarget = bitmapTarget.GetPixel(nX, nY);
    Color colorImage = bitmapImage.GetPixel(nTargetX + nX, nTargetY + nY);

    if (colorTarget != colorImage)
    {
    return false;
    }
    }
    }

    return true;
    }

    https://dotup.org/uploda/dotup.org1608061.png.html

    上記のURLのように元の画像を拡大して貼り付けた画像を検索することができません。
    どのように改造すれば拡大された画像を検索してカウントすることができるのでしょうか。

    拡大前の画像は以下の通りです。

    pictureBox1.BackgroundImage = SystemIcons.Hand.ToBitmap();
    pictureBox2.BackgroundImage = SystemIcons.Information.ToBitmap();
    pictureBox3.BackgroundImage = SystemIcons.Question.ToBitmap();
    pictureBox4.BackgroundImage = SystemIcons.Warning.ToBitmap();

親記事 /過去ログ152より / 関連記事表示
削除チェック/

■88235  Re[1]: 拡大された画像をカウントする
□投稿者/ Azulean -(2018/08/10(Fri) 23:39:41)
    2018/08/10(Fri) 23:58:11 編集(投稿者)

    No88234 (マッチ さん) に返信
    > 上記のURLのように元の画像を拡大して貼り付けた画像を検索することができません。
    > どのように改造すれば拡大された画像を検索してカウントすることができるのでしょうか。

    今のコードを改造するレベルでは無理だと思います。

    理由
     今のコードは完全一致を前提とします。
     しかし、拡大や縮小処理はピクセルが補間される関係で、色が混ざるので、同じサイズに拡縮しても、完全一致しないことがほとんどです。

    よって、完全一致ではなく、何らかの評価方法によって一定以内に収まるものをカウントすることになります。
    が、適切な評価関数は自分の置かれている状況によって変わるので、いろいろと探すか、考えていただくしかないです。。。
    (検索キーワードは「パターンマッチ」か)


    ※今みたいに明確に異なる4種であり、他の画像を出身とする画像がないなら、同じサイズに拡縮して、差が一定以内なら一致と判定するのもありでしょう。
    (水平移動や回転ががないことが前提)
記事No.88234 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88240  Re[2]: 拡大された画像をカウントする
□投稿者/ マッチ -(2018/08/11(Sat) 22:32:53)
    >今のコードを改造するレベルでは無理だと思います。
    そうですか。残念です。

    >何らかの評価方法によって一定以内に収まるものをカウントすることになります。
    考えてみたのが比較画像を縮小して拡大前の画像と比較する方法です。
    評価方法はRGBのRとGとBのそれぞれの差を求めて一定以内であれば一致という方式を考えていました。
    ネットで見るとRGBの平均値をとって平均値の差を求めるやり方を見つけたので
    今はそちらを採用しようと思ってます。
    後は、RGBから輝度を求めて比較する方法も見つけました。
    こちらも使われている例が多かったです。
    本来であれば計算で評価方法の許容範囲を決めるのだろうと思いますが、
    RGBの計算結果を見ながら範囲を調整しようと考えています。

    困っているのが貼り付けた画像をどう縮小させるかです。
    四角の画像であれば隅の4点の色を見て画像を切り出せそうですが、
    三角や丸の画像の範囲をどう切り出せばいいかわかりません。
    どうすればいいでしょうか。
記事No.88234 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88242  Re[3]: 拡大された画像をカウントする
□投稿者/ Azulean -(2018/08/12(Sun) 22:41:25)
    No88240 (マッチ さん) に返信
    > 困っているのが貼り付けた画像をどう縮小させるかです。
    > 四角の画像であれば隅の4点の色を見て画像を切り出せそうですが、
    > 三角や丸の画像の範囲をどう切り出せばいいかわかりません。
    > どうすればいいでしょうか。

    画像処理をいろいろと調べて、置ける制約・前提、要求、自分のスキル、必要な実装時間のバランスが取れるものを探した方が良いと思います。
    個人的には自力実装を諦めて、OpenCV の処理を組み合わせてできる範囲を狙った方が良さそうな気もします。

    (どうすれば良いのでしょうか…と問われても、前提も制約も要求も曖昧で、かつ、知識・スキルが不明瞭の中での提案は難しいので…)
記事No.88234 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88245  Re[3]: 拡大された画像をカウントする
□投稿者/ 魔界の仮面弁士 -(2018/08/13(Mon) 02:35:19)
    2018/08/13(Mon) 02:45:15 編集(投稿者)

    No88240 (マッチ さん) に返信
    > 四角の画像であれば隅の4点の色を見て画像を切り出せそうですが、

    背景部も含めて矩形のままで評価して良いのではないでしょうか。

    被検出画像もアイコン側も、背景色が同じ(F0F0F0)ですし、
    しかも画像の重なりも無いようですから。


    > 三角や丸の画像の範囲をどう切り出せばいいかわかりません。

    三角や丸に切り抜く必要があるとした場合、被検出画像の方はさておき、
    少なくともアイコン側は Icon.ToBitmap() で生成したものなので、
    最初から Alpha 値を持っているはずです。

    元画像が RGB ではなく RGBA である以上、
    どこが背景部なのかは明確ではないでしょうか?

    と言っても、アンチエイリアスによる半透明部もありますので、
    どこまでを背景部とするか、閾値を決める必要はあるでしょうね。

    たとえば下記では、Bitmap の透明部を判定するために、
    25%(&H40)未満を閾値として処理しています。
    http://smdn.jp/programming/tips/create_region_from_bitmap/


    > 考えてみたのが比較画像を縮小して拡大前の画像と比較する方法です。
    テンプレートマッチングだとスケーリングに弱いので、
    拡大縮小を自前で補うことになりますね。

    下記に Multi-scale Template Matching な例があります。
    言語は Python ですが、考え方としては同じではないでしょうか。
    https://www.pyimagesearch.com/2015/01/26/multi-scale-template-matching-using-python-opencv/

    このサンプルでは、ロゴの色が変わったりしても検出できるよう、あえて
    Canny アルゴリズムでエッジ検出してからテンプレートマッチしているので
    今回の内容とはちょっと異なりますが、処理手順の参考にはなるかと。

    ただし上記では、「拡大率を変えながら、もっともスコアの高かったもの」を
    採用していますが、それは画像内に含まれるロゴ が 1 つだけだったから。

    今回の場合、複数のアイコンがあるわけですから、最大スコアではなく
    何らかの閾値で反転するよう調整する必要があるでしょう。


    別案として、AKAZE なり SIFT なりで特徴点・特微量を得て比較する方法も
    検討してみましたが…パラメータ調整が難しそうだったので途中で断念しました。(^^;

    参考までに、アップロード頂いた画像を使ってマッチング処理したものを上げておきます。
    SIFT で得た後に総当たりマッチング(BFMatcher)をかけています。
    (パラメーターを殆ど弄っていないので、誤検出も多いですが)

    http://www.vb-user.net/junk/replySamples/2018.08.13.01.01/wankuma88234_SIFT_Match1.png
    http://www.vb-user.net/junk/replySamples/2018.08.13.01.01/wankuma88234_SIFT_Match2.png

    1 つ目の方は、アイコンが 64x64 サイズ。当方環境でアイコンを .ToBitmap() したものです。
    2 つ目の方は、アイコンが 48x48 サイズ。アップロード頂いたものから切り出したものです。
    (前者の方は背景透過な RGBA 画像、後者は背景灰色の RGB 画像となっています)
記事No.88234 のレス /過去ログ152より / 関連記事表示
削除チェック/

■96875  Re[4]: 単一インスタンスのアプリケーションを作成するを一時的に無効化
□投稿者/ とっちゃん -(2021/02/21(Sun) 13:39:07)
    No96874 (コング さん) に返信
    > ありがとうございます。
    >
    > これって
    > [単一インスタンスのアプリケーションを作成する]
    > を無効化した上で、
    >
    「これ」がどれを指してるのかいまいちよくわからないですが
    「二重起動防止策を自分で組み込む」を指しているのであれば、
    もっと早い段階(具体的には、Main関数を使うようにしてそこで)
    行う必要があります。

    VBでのMain関数の作り方については、ここの掲示板でも過去に何度も出ていますし
    あちこちに記事があるので、詳しいことは丸っと省略しますが以下のような感じでメイン関数を書きます

    > Sub Main()
    > ' ここで、二重起動しているかを確認
    > ' 2回目以降の起動であれば、すぐに「return」で終了する(Exitではない)
    > ' 問題なければ、アプリケーションの起動シーケンス(Appliation.Run())に行く。
    > End Sub


    ちなみに、Load イベントは、今ウィンドウを作っていますよ(この場合はForm0かな?)というイベントです。
    なので、ここでやっぱやめた!とする場合は、
    Exit() ではなく Close()を呼び出し、その直後でReturnします。


    おまけ…

    > Dim mutexName As String = "MyApplicationName"
    > 'Mutex名の先頭に「Global\」を付けて、Global Mutexにする
    > mutexName = "Global\" & mutexName

    アプリ起動中に同一マシン内でほかのユーザーも同時に利用する場面があるのでしょうか?
    その場合は、Globalを付けて、マシン全体で一意な識別子とする必要がありますが
    そうではない(ユーザーが異なるなら同時に動いてもよい、すなわちほかのマシンであれば同時に動いてもよいと同じ)なら
    わざわざつける必要はありません(後続のいろいろな権限の部分も、特に権限設定は必要ない)。
記事No.96867 のレス /過去ログ168より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -