Mat a, s,m,d; Mat water=imread("D:/vs2017 ku/雷亮老师opencv第2次作业/cf1d7ca156a4ee97534cc7e9ada54f3.jpg"); Mat photo = imread("D:/vs2017 ku/雷亮老师opencv第2次作业/clip.png"); add(photo, water, a); subtract(photo, water, s); multiply(photo, water, m); divide(photo, water, d); imshow("加:",a); imshow("减:",s); imshow("乘:",m); imshow("除:",d); waitKey(0); return 0;
时间: 2024-03-15 13:43:00 浏览: 55
这是一段使用 OpenCV 库进行图片加减乘除运算的 C++ 代码。其中,使用 `imread` 函数读取了两张图片,一张是 `cf1d7ca156a4ee97534cc7e9ada54f3.jpg`,另一张是 `clip.png`。然后分别对这两张图片进行加减乘除运算,得到四张新的图片,并使用 `imshow` 函数将其展示出来。最后使用 `waitKey` 函数等待用户按下任意键,然后返回 0。
相关问题
#include <opencv2\opencv.hpp> #include <iostream> using namespace std; using namespace cv; int main() { Mat srcImage = imread("D:/opencv/operator/PHOTO/1.png"); Mat logoImage = imread("D:/opencv/operator/PHOTO/111.png"); Mat imageRoi = srcImage(Rect(100, 600, logoImage.cols, logoImage.rows)); Mat mask = imread("D:/opencv/operator/PHOTO/111.png", 0); logoImage.copyTo(imageRoi, mask); imwrite("D:/opencv/operator/PHOTO/21.png", srcImage); return 0; }
这段代码使用了OpenCV库来读取两图片,并将一张图片覆盖到另张图片的指定区域上。体的操作包括:
1. 引入必要的头文件和命名空间。
2. 在`main函数中,使用`im`函数读取了张图片,一张是源图片srcImage`,另一张是待覆盖的图片`logoImage`。
3. 创建一个`imageRoi`矩形区域,用来指定在源图片中覆盖的位置和大小,这里的位置是`(100, 600)`,大小是`logoImage`的宽高。
4. 使用`imread`函数读取待覆盖图片的灰度图,作为掩码`mask`。
5. 使用`copyTo`函数将待覆盖图片`logoImage`复制到源图片的指定区域`imageRoi`上,并利用掩码`mask`进行融合。
6. 使用`imwrite`函数将处理后的图片保存到指定路径。
7. 返回0,表示程序正常执行结束。
请注意,以上代码中的图片路径是绝对路径,你需要根据实际情况修改路径。
Mat img = imread("C:/yangben/images/test/a1.jpg");
在使用OpenCV处理图像时,`imread`是一个非常常用的功能,用于从指定路径读取图像文件,并将其加载为一个`Mat`对象。`Mat`对象是OpenCV中用于存储图像数据的矩阵类型。
在您提供的代码行中:
```java
Mat img = imread("C:/yangben/images/test/a1.jpg");
```
`imread`函数接受一个字符串参数,这个字符串是图像文件的路径。在这个例子中,路径是`"C:/yangben/images/test/a1.jpg"`,表示要读取位于`C:/yangben/images/test/`目录下的名为`a1.jpg`的文件。读取成功后,这个图像文件将被转换成一个`Mat`对象,并赋值给变量`img`。
需要注意的是,`imread`函数的第二个参数可以指定读取图像的方式,例如是否包含alpha通道,是否转换为灰度图像等,但是在这个例子中,第二个参数没有被指定,所以它将默认使用`IMREAD_COLOR`标志,这意味着图像将被加载为一个带有颜色的常规图像。
如果图像文件成功读取,`img`变量将包含图像数据,之后可以使用OpenCV提供的各种方法对`img`进行进一步的处理。
阅读全文