应用草图效果和卡通效果的方法

时间:2014-04-02 14:37:42

标签: c image-processing android-ndk

我想知道在哪里可以找到3个好的算法,或者3个C代码示例:

  • 对图像应用草图效果(黑白)
  • 对图像应用草图效果(颜色)
  • 对图像应用卡通效果(颜色)

我已经有了黑白素描的代码,但它太白了..

void sketchFilter(int *pixels, int width, int height) {
changeImageToGray(pixels, width, height);

int *tempPixels = new int[width * height];
memcpy(tempPixels, pixels, width * height * sizeof(int));

int threshold = 7;
float num = 8;
for (int i = 1; i < height - 1; i++) {
    for (int j = 1; j < width - 1; j++) {
        Color centerColor(tempPixels[i * width + j]);
        int centerGray = centerColor.R();

        Color rightBottomColor(tempPixels[(i + 1) * width + j + 1]);
        int rightBottomGray = rightBottomColor.R();
        if (abs(centerGray - rightBottomGray) >= threshold) {
            pixels[i * width + j] = RGB2Color(0, 0, 0); // black
        }
        else {
            pixels[i * width + j] = RGB2Color(255, 255, 255); // white
        }
    }
}

delete [] tempPixels;
}

任何改进此代码的方法,还是应该完全不同? 我怎样才能做彩色卡通(涂鸦?)和彩色素描? 谢谢!

1 个答案:

答案 0 :(得分:1)

描述了卡通式的风格in this page;它可以通过平滑然后(非侵略性的)分色效果来实现。两者都可以使用OpenCV进行,使用any filter作为smotthing,PyrMeanShiftFiltering作为posterize。

编辑: 铅笔(颜色)草图描述为f.e.在this StackOverflow question