怎么用C++ OpenCV实现像素画

怎么用C++ OpenCV实现像素画

这篇文章主要介绍“怎么用C++OpenCV实现像素画”,在日常操作中,相信很多人在怎么用C++OpenCV实现像素画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C++OpenCV实现像素画”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

准备工作

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

代码实现

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

find_package(OpenCV4REQUIRED)include_directories(${OPENCV_INCLUDE_DIRS})target_link_libraries(${PROJECT_NAME}${OpenCV_LIBRARIES})

读取文件

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

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

intheight=img.size().height;intwidth=img.size().width;intpixel_size=10;intnew_width=width/pixel_size;intnew_height=height/pixel_size;

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

cv::MatimgTmp;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>intmain(){std::stringpath="/Users/wbf/Desktop/";cv::Matimg=cv::imread(path+"meinv.jpeg");cv::imshow("meinv",img);intheight=img.size().height;intwidth=img.size().width;intpixel_size=10;intnew_width=width/pixel_size;intnew_height=height/pixel_size;std::cout<<new_height<<","<<new_width<<std::endl;cv::MatimgTmp;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实现像素画”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!

发布于 2022-01-21 23:15:44
收藏
分享
海报
0 条评论
31
上一篇:怎么用Android PopUpWindow实现卡片式弹窗 下一篇:django中websocket怎么使用
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码