簡體   English   中英

OpenCV像素化算法

[英]OpenCV pixelate algorithm

大家。

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

它使用OpenCV庫以C ++編寫的算法,其工作方式如下:

  • 稍微增加Mat的對比度;
  • 調整墊到它的大小d%,使用n個 earest-Ñeighbor nterpolation;
  • 也可以使用nni將Mat調整為原始大小。

[ D =密度,函數的參數]

有什么方法可以使結果看起來更好?

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;
}

2年零9個月后,但我認為值得分享,我使用像素化圖像的方法是:

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(非常)。 為了提高性能,您可以選擇“ size”變量來改變抽象參數的功能和圖像的大小……嗯,希望對您有所幫助,甚至晚了將近3年!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM