实例:图像载入、显示、混合与输出[OpenCV 笔记8]

是的是的,忍着尿意努力更新,就是为了更到wuli男神的部分,当然要把男神放在前面镇楼,欢迎下载配图,具体操作见code

wuliEddie.jpg

logo.png

results.jpg

LoadShowWriteImage.cxx

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
//#include <opencv2/imgcodecs/imgcodecs.hpp>
//#include <opencv2/imgproc/imgproc.hpp>

int main(){
    // load image and show
    cv::Mat image = cv::imread("wuliEddie.jpg");
    cv::namedWindow("Image");
    cv::imshow("Image", image);

    // overlap images
    cv::Mat logo = cv::imread("logo.png");
    cv::namedWindow("Logo");
    cv::imshow("Logo", logo);

    // define a Mat instance to save ROI
    cv::Mat imageROI;
    imageROI = image(cv::Rect(400,300,logo.cols,logo.rows));
    // Rect(x,y,Width,Height)

    // another way
    //imageROI = image(cv::Range(350,350+logo.rows), cv::Range(800,800+logo.cols));

    // put the logo onto the image
    addWeighted(imageROI, 1.0, logo, 1.0, 0., imageROI);
    //void cv::addWeighted(InputArray src1, double alpha, InputArray src2, double beta,
    //  double gamma, OutputArray dst, int dtype = -1)

    // show Results
    cv::namedWindow("Image with Logo");
    cv::imshow("Image with Logo", image);
    cv::waitKey();

    // save image
    cv::imwrite("results.jpg", image);

    return 0;
}
时间: 2024-10-09 21:53:59

实例:图像载入、显示、混合与输出[OpenCV 笔记8]的相关文章

图像载入 imshow()[OpenCV 笔记5]

void imshow(const string& winname InputArray mat); winname 窗口表识名称 mat 需要显示的图像.InputArray类型,声明如下 typedef const _InputArray& InputArray; _InputArray定义比较复杂,类里先定义了一个枚举,然后是各类的模版类型和一些方法.遇到InputArray/OutputArray类型,可以把它当作Mat类型处理. 图像大小缩放 如果窗口是用CV_WINDOW_AU

图像载入 imread()[OpenCV 笔记4]

Mat imread( const string& filename, int flags=1 ); filename 载入的图像名: flags 指定加载图像的颜色类型,默认载入三通道彩色图像, 如果取枚举类型 (OpenCV3中暂时失效),则定义如下 enum{ CV_LOAD_IMAGE_UNCHANGED = -1, /* 8 bit, color or not */ CV_LOAD_IMAGE_GRAYSCALE = 0, /* 8 bit, gray */ CV_LOAD_IMAGE

图像储存容器Mat[OpenCV 笔记11]

IplImage 与 Mat IplImage是OpenCV1中的图像存储结构体,基于C接口创建.在退出之前必须release,否则就会造成内存泄露.在一些只能使用C语言的嵌入式系统中,不得不使用. IplImage* img = cvLoadImage("imagename.jpg",1); Mat类内存分配是自动完成的,不必手动开辟空间(非必须),不必在不需要时释放空间. Mat类的构成 Mat由矩阵头和一个指向存储图像矩阵的指针组成.为应该尽量避免图像的复制,加快程序运行速度,M

访问图像中的像素[OpenCV 笔记16]

再更一发好久没更过的OpenCV,不过其实写到这个部分对计算机视觉算法有所了解的应该可以做到用什么查什么了,所以后面可能会更的慢一点吧,既然开了新坑,还是机器学习更有研究价值吧... 图像在内存中的存储方式 灰度图像 RGB图像,矩阵的列会包含多个子列 因为内存足够大,可以实现连续存储,因此,图像中的各行就能一行一行地连接起来,形成一个长行.连续存储,有助于提高图像扫面速度,可以使用isContinuous()来判断矩阵是否是连续存储. 颜色空间缩减 对于三通道图像,一个像素对应的颜色有一千六百

图像处理简单实例[OpenCV 笔记1]

几个入门的简单程序,和对应的CMakeList, 虽然简单重新测一下写一下也是好的. CMake教程传送门 图像显示 ShowImage.cxx #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgcodecs/imgcodecs.hpp> int main(){ cv::Mat srcImage = cv::imread("1.jp

视频处理简单实例 [OpenCV 笔记2]

VideoCapture是OpenCV 2.X中新增的类,提供从摄像机或视频文件捕获视频的C++接口.利用它读入视频的方法一般有两种: // method 1 VideoCapture capture; capture.open("1.avi"); // method 2 VideoCapture capture("1.avi"); 读取并播放视频 ReadPlayVideo.cxx #include <opencv2/opencv.hpp> int m

实例:图形绘制[OpenCV 笔记15]

DrawShapes.cxx # include "DrawShapes_utils.h" #define WINDOW_NAME1 "Painting 1" #define WINDOW_NAME2 "Painting 2" // main int main( void ) { // crate Mat image cv::Mat atomImage = cv::Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV

输出图像到文件 imwrite()[OpenCV 笔记7]

bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>()); filename 待写入的文件名.保存图像的格式由扩展名决定. img 一般为一个Mat类型的图像 params 特定格式保存的参数编码: JPEG:params表示0到100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值为95: PNG:params表示压

滑动条 Trackbar[OpenCV 笔记9]

OpenCV中没有实现按钮的功能,我们可以利用滑动条来实现按钮功能. int createTrackerbar(const string& trackerbarname, const string winame, int* value, int count, TrackbarCallback onChange=0, void* userdata=0); trackbarname 轨迹条的名字. winname 窗口的名字,轨迹条会依附在这个窗口上. value 一个指向整型的指针,表示滑块的位置