c/c++语言开发共享C++ OpenCV实现像素画的示例代码

目录准备工作代码实现完整代码最近在学习opencv,准备后续更新一波opencv相关的内容。代码实现主要是以 c++ 为主, 另外为了辅助学习,还会使用c# 开发一款桌面的软件,用于演示各种功能。今天

目录
  • 准备工作
  • 代码实现
  • 完整代码

最近在学习opencv,准备后续更新一波opencv相关的内容。代码实现主要是以 c++ 为主, 另外为了辅助学习,还会使用c# 开发一款桌面的软件,用于演示各种功能。

今天我给大家准备了一个类似于打马赛克的功能。通过像素的变化,演示一个像素画的功能。像素画在 nft 中特别的流行。

准备工作

需要安装好 opencv,opencv的安装过程在这里不再赘述。另外我们准备了一个图片。

C++ OpenCV实现像素画的示例代码

代码实现

首先我们需要在 cmakelists.txt 文件中, 添加 opencv 的依赖

find_package(opencv 4 required)    include_directories(          ${opencv_include_dirs}  )    target_link_libraries(${project_name} ${opencv_libraries})

读取文件

std::string path = "/path/to/img/";  cv::mat img = cv::imread(path +"meinv.jpeg");  

获取原图的像素宽高,然后进行像素比缩放。

int height = img.size().height;  int width = img.size().width;    int pixel_size = 10;    int new_width = width / pixel_size;  int new_height = height / pixel_size;

根据设定的像素比, 对原图进行缩小,再放大的两次 resize 操作。这样就完成了像素图的处理。

cv::mat imgtmp;  cv::resize(img, imgtmp, cv::size(new_width, new_height), 0, 0, cv::inter_linear);    cv::resize(imgtmp, imgtmp, cv::size(width/2, height/2),0, 0, cv::inter_linear);

那我们来看下处理过之后的图像效果吧

C++ OpenCV实现像素画的示例代码

效果看起来还可以,图片颜色单一图片尺寸稍微小一些的效果会好很多。

完整代码

#include <iostream>  #include <opencv2/opencv.hpp>    int main() {        std::string path = "/users/wbf/desktop/";      cv::mat img = cv::imread(path +"meinv.jpeg");      cv::imshow("meinv", img);      int height = img.size().height;      int width = img.size().width;        int pixel_size = 10;        int new_width = width / pixel_size;      int new_height = height / pixel_size;        std::cout << new_height << "," << new_width << std::endl;      cv::mat imgtmp;      cv::resize(img, imgtmp, cv::size(new_width, new_height), 0, 0, cv::inter_linear);        cv::resize(imgtmp, imgtmp, cv::size(width/2, height/2),0, 0, cv::inter_linear);    //    std::vector<cv::mat> v_mat ;  //    v_mat.push_back(img);  //    v_mat.push_back(imgtmp);      cv::imshow("meinv2" , imgtmp);      cv::waitkey(0);  }    

到此这篇关于c++ opencv实现像素画的示例代码的文章就介绍到这了,更多相关c++ opencv像素画内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多c/c++开发分享C++ OpenCV实现像素画的示例代码,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1037880.html

(0)
上一篇 2022年1月25日
下一篇 2022年1月25日

精彩推荐