利用OpenCV的函数max()和min()取两幅图像中相同位置像素点的较大值或较小值
Posted 昊虹AI笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用OpenCV的函数max()和min()取两幅图像中相同位置像素点的较大值或较小值相关的知识,希望对你有一定的参考价值。
函数max()和min()用于取两幅图像中相同位置像素点的较大值或较小值,而不是用来求某幅图像中的像素最大值或最小值。
如果您需要求某幅图像中的像素最大值或最小值,可以使用函数minMaxLoc()来实现,关于函数minMaxLoc()的详细介绍,可以参考我的另一篇博文,链接 https://www.hhai.cc/thread-153-1-1.html
另外,如果您想把两幅图像间满足某个比较逻辑条件的像素值置为255,那么可利用OpenCV的函数 compare()实现。
关于compare()的详细介绍,可参阅官方文档,官方文档链接如下:
https://docs.opencv.org/4.4.0/d2/de8/group__core__array.html#ga303cfb72acf8cbb36d884650c09a3a97
函数max()和min()的使用非常简单,这里就不对它们作介绍了,大家直接看下面的示例代码就知道怎么用了。
C++示例代码如下:
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术
//OpenCV版本 OpenCV3.0
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
cv::Mat A1 = (cv::Mat_<uchar>(3, 3) << 1, 1, 1,
66, 66, 66,
55, 55, 55);
cout << "A1中的数据为:\\n" << A1 << endl << endl;
cv::Mat B1 = (cv::Mat_<uchar>(3, 3) << 88, 88, 88,
2, 2, 2,
55, 55, 55);
cout << "B1中的数据为:\\n" << B1 << endl << endl;
cv::Mat C1 = max(A1, B1);
cout << "C1中的数据为:\\n" << C1 << endl << endl;
cv::Mat C2 = min(A1, B1);
cout << "C2中的数据为:\\n" << C2 << endl << endl;
return(0);
运行结果如下:
Python示例代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 出处:昊虹AI笔记网(hhai.cc)
# 用心记录计算机视觉和AI技术
# OpenCV的版本为4.4.0
import numpy as np
import cv2 as cv
if __name__ == '__main__':
A1 = np.array([[1, 1, 1],
[66, 66, 66],
[55, 55, 55]], dtype='int8')
B1 = np.array([[88, 88, 88],
[2, 2, 2],
[55, 55, 55]], dtype='int8')
C1 = cv.max(A1, B1)
C2 = cv.min(A1, B1)
运行结果如下:
以上是关于利用OpenCV的函数max()和min()取两幅图像中相同位置像素点的较大值或较小值的主要内容,如果未能解决你的问题,请参考以下文章
我想利用OpenCV在MFC对话框中点击按钮,完成输入电脑中的两幅图像同时显示在对话框中这个任务,哪位大哥