0

次のコードを見てください

#include <iostream>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\core\core.hpp>

using namespace std;
using namespace cv;

void reduceColor(Mat&,int=64);

int main()
{
    Mat image = imread("C:/Users/Public/Pictures/Sample Pictures/Koala.jpg");

    namedWindow("Image");
    imshow("Image",image);

    //reduceColor(image,64);

    waitKey(0);
}

void reduceColor(Mat &image,int division)
{
    int numberOfRows = image.rows;
    int numberOfColumns = image.cols * image.channels();

    for(int i=0;i<numberOfRows;i++)
    {
        uchar *data = image.ptr<uchar>(i);

        for(int pixel=0;pixel<numberOfColumns;pixel++)
        {
            data[i] = data[i]/division*division + division/2;
        }
    }

    namedWindow("Image2");
    imshow("Image2",image);


}

これがコンピュータービジョンです。すべてのピクセルとチャンネルをナビゲートして、画像を読み取ってその色を減らそうとしています。でも、色落ちしない!元の画像を表示するだけです!助けてください!

4

1 に答える 1

2

iネストされたforループで変数がインクリメントされることはありませんが、設定していますdata[i]。したがって、関数呼び出し後に最初の列のいくつかのピクセルが変更されている可能性がありますが、他には何も変更されていません。

于 2013-04-10T17:17:14.040 に答える