0

私はこれが非常に単純であることを知っていますが、Opencv で動作させることはできません。同じサイズの 2 つの画像があります。1 つは RGB で、もう 1 つは白黒です。白黒画像は、Opencv で何らかの変換を行った後に取得されます。今、私は白黒画像をRGB画像にマッピングし、白黒画像の白いピクセルに対応するピクセルのみを保持したいと考えています。黒は単に破棄されます。

C# では簡単ですが、私は c++ opencv を使用しているため、openCV で実行したいと考えています。どうすればできますか?

C# では次のようになります。

for(i = 0; i < image.lenght; i+=4)
{
if(img_bw != 255)
image[i] = 0;image[i+1] = 0;image[i+2] = 0;
}
4

2 に答える 2

2

http://docs.opencv.org/doc/tutorials/core/how_to_scan_images/how_to_scan_images.htmlに基づく

cv::Mat bw = ...;
cv::Mat clr = ...;  // clr.size() == bw.size()

for(int i = 0; i < bw.rows; ++ i)
{
    uchar* bw_r = bw.ptr<uchar>(i);
    cv::Vec3b* clr_r = clr.ptr<Vec3b>(i);
    for(int j = 0; j < bw.cols; ++j)
        if(br_r[j] != 255)
            clr_r[j] = cv::Vec3b(0, 0, 0);
}
于 2013-06-04T11:46:10.927 に答える