这篇文章主要介绍“怎么用C++ OpenCV实现像素画”,在日常操作中,相信很多人在怎么用C++ OpenCV实现像素画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C++ OpenCV实现像素画”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
需要安装好 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 = "/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实现像素画”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。