2017-01-17 8 views
0

は、私がこれを行うことによって、赤にピクセルのコレクションを設定しようとしている:OpenCVでピクセルのコレクションを(R、G、B)値に設定することはできますか?

for(j=0;j<180;j++){ 
    for(i=0;i<180;i++){ 
    cv::Vec3b color =frame.at<cv::Vec3b>(j,i); 
    color[0]=0; 
    color[1]=0; 
    color[2]=255; 
    frame.at<cv::Vec3b>(j,i) = color; 
    } 
} 

Instead it results in this

私はあなたが本当に近いCRTテレビを見ている場合、あなたが見るもののように、RGB形式の層を得ます。特定のピクセルをRGB値に設定するにはどうすればいいですか?私はおそらく本当にばかげた何かをやっているでしょう:(あなたが私に助けになるためにもっと情報を提供できると思うなら、私はこれを非常に新しくしています:)

+0

このような['代入演算子'](http://docs.opencv.org/trunk/d3/d63/classcv_1_1Mat.html#aa5c947f7e449a4d856a4f3a87fcebd50)、[' setTo'](http://docs.opencv.org/trunk/d3/d63/classcv_1_1Mat.html#a0440e2a164c0b0d8462fb1e487be9​​876)と[サブマトリックスを抽出する]への複数の方法(http://docs.opencv.org/trunk/d3/ d63/classcv_1_1Mat.html#ad543b6bd296ae1247032c750af4718e1)を入力してください。 –

+0

@DanMašek私はそれをしてくれた機能があると思っていました。好奇心は時々私の最高を得ます:) – Joey

答えて

0

入力はあなたのケースではありませんCV_8UC3タイプです。CV_8UC4である必要があります。その理由は、RGBのパターンが、ピクセルごとに1バイトシフトする非参照の第4チャネルのために、結果イメージに繰り返し表示されるためです。正しい結果を得るには、Vec3bの代わりにVec4bを使用する必要があります。

+0

赤、青、緑のチャンネルがあると思いますが、第4チャンネルは何ですか? – Joey

+0

通常、アルファチャンネル(すなわち、透明度)。画像がどのように読み込まれているのか(おそらくimreadへの呼び出し)、それを追跡するのに役立ちます。 –

+0

@hariprasadはこのようなものの戻り値の型を見てみることをお勧めするページがありますか?それは3.2.0のための既に存在するドキュメンテーションにあるかもしれませんが、私はそれを見つけるための手がかりがありません。 – Joey

関連する問題