我想知道在哪里可以找到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;
}
任何改进此代码的方法,还是应该完全不同? 我怎样才能做彩色卡通(涂鸦?)和彩色素描? 谢谢!
答案 0 :(得分:1)
描述了卡通式的风格in this page;它可以通过平滑然后(非侵略性的)分色效果来实现。两者都可以使用OpenCV进行,使用any filter作为smotthing,PyrMeanShiftFiltering作为posterize。
编辑: 铅笔(颜色)草图描述为f.e.在this StackOverflow question。