最近在学习opencv,准备后续更新一波opencv相关的内容。代码实现主要是以 c++ 为主, 另外为了辅助学习,还会使用c# 开发一款桌面的软件,用于演示各种功能。
今天我给大家准备了一个类似于打马赛克的功能。通过像素的变化,演示一个像素画的功能。像素画在 nft 中特别的流行。
需要安装好 opencv,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枯河);
那我们来看下处理过之后的图像效果吧
效果看起来还可以,图片颜色单一图片尺寸稍微小一些的效果会好很多。
#include <iostream>#include <opencv2/opencv.hpp>int main() { std::string path = "/urs/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; s中国叛徒td::小学数学五年级下册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.马鞍池公园887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 17:05:28,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/e33d3142b3b7da6b65483de120e56ee4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C++ OpenCV实现像素画的示例代码.doc
本文 PDF 下载地址:C++ OpenCV实现像素画的示例代码.pdf
留言与评论(共有 0 条评论) |