首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV像素化算法

OpenCV像素化算法
EN

Stack Overflow用户
提问于 2015-10-12 02:57:40
回答 1查看 2.3K关注 0票数 0

所有人。

我想知道我正在研究的像素化算法是否有任何改进。

该算法是在C++中使用OpenCV库编写的,其工作方式如下:

  • 稍微增加垫的对比度;
  • 使用nearest-neighbor interpolation;将Mat调整为其大小的D%
  • 调整Mat的大小回到原来的大小,也使用nni

D =密度,函数的一个参数

有什么办法让结果看起来更好吗?

代码语言:javascript
复制
Mat pixelize(Mat src, int density){
    Size s(src.cols, src.rows);

    src.convertTo(src, -1, 1.1, 0);

    resize(src, src, percent(s, density), 1, 1, INTER_NEAREST);
    resize(src, src, s, 1, 1, INTER_NEAREST);

    resize(src, src, Size(640, 480));
    return src;
}
EN

回答 1

Stack Overflow用户

发布于 2018-07-19 08:51:05

两年零9个月后,但我认为值得分享的是,我用来对图像进行像素化的方法是:

代码语言:javascript
复制
int size = 7;//only odd!
int max_step = (size - 1) / 2;
Mat m = imread("test.jpg");
for (int i = max_step; i < m.rows- max_step; i+=size) {
    for (int j = max_step; j < m.cols- max_step; j+=size) {
        Vec3b colour = m.at<Vec3b>(Point(j, i));
        for (int k = -max_step; k <= max_step; k++) {
            for (int l = -max_step; l <= max_step; l++) {
                m.at<Vec3b>(Point(j - k, i - l)) = colour;
            }
        }
    }
}
imshow("pixeled", m);
waitKey(0);

有了这个,你就可以选择每一个奇数像素(大小变量),并以与选择的像素颜色相同的颜色对其邻接进行修改。

注意到这并不能处理边缘,但是您可以理解这个算法

这里我留下了一些参数为1(无)、7(中等)和21(非常)的图片。为了改进,您可以选择“大小”var来改变抽象参数的函数和图像的大小。好吧,希望它能帮上忙,甚至迟了3年!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33072603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档