这个好像对的:
cv::Mat image0 = cv::imread("../configs/bus.jpg", cv::IMREAD_UNCHANGED);
cv::Mat dst = cv::Mat::zeros(image0.size(), CV_32FC3);
image0.convertTo(dst, CV_32FC3);// , 10, -1);
//dst.convertTo(dst, CV_32F,1/255);// , 10, -1);
int bbb;
bbb= 5;
cv::Mat image_re = dst.reshape(1, 1);
double minValue, maxValue; // 最大值,最小值
cv::Point minIdx, maxIdx; // 最小值坐标,最大值坐标
cv::minMaxLoc(image_re, &minValue, &maxValue, &minIdx, &maxIdx);
std::cout <<",最大值:"<< maxValue << "最小值:" << minValue << std::endl;
std::cout << "size "<< dst.size()<<" " << image_re.size() << std::endl;
std::cout << "最大值位置:" << maxIdx << "最小值位置:" << minIdx;
mat.type()函数
opencv中Mat存在各种类型,其中mat有一个type()的函数可以返回该Mat的类型。类型表示了矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量。具体的有以下值:
通道数我们可以发现,C4=C3+8、C3=C2+8
c++ opencv mat 最大值
opencv4可以多通道计算,opencv3.4只能计算单通道图像。
img为mat:
double maxValue = *max_element(img.begin<double>(), img.end<double>());
double minValue = *min_element(img.begin<double>(), img.end<double>());
opencv4.4 上面的好像不准,下面的是对的
opencv3.4.8下面的报错,不知为啥?
string timestr = DatetimeToString(timep);
frame = cv::imread("E:\\bar1.jpg");
//cv::imwrite(target_path + timestr + "_" + std::to_string(img_index) + ".jpg", frame);
//int maxValue11 = *max_element(frame.begin<int>(), frame.end<int>());
//int minValue11 = *min_element(frame.begin<int>(), frame.end<int>());
cv::cvtColor(frame, frame, cv::COLOR_BGR2RGB);
double minVal, maxVal;
int minIdx[2] = {}, maxIdx[2] = {}; // minnimum Index, maximum Inde
minMaxIdx(frame, &minVal, &maxVal, minIdx, maxIdx);
cout << "[m_min] = " << endl << minVal << endl;
cout << "[m_max] = " << endl << maxVal << endl << endl;
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
uchar data[] = {
10, 200, 5, 7, 9,
15, 35, 60, 80, 170,
100, 2, 55, 37, 70
};
Mat m1(3, 5, CV_8U, data);
Mat m_min, m_max; // minimum value, maximum value
double minVal, maxVal;
int minIdx[2] = {}, maxIdx[2] = {}; // minnimum Index, maximum Index
minMaxIdx(m1, &minVal, &maxVal, minIdx, maxIdx);
cout << "[m1] = " << endl << m1 << endl << endl;
cout << "[m_min] = " << endl << m_min << endl;
cout << "[m_max] = " << endl << m_max << endl << endl;
cout << "minimum value in m1 : " << minVal << endl;
cout << " minimum value's Index is : " << minIdx[1] << ", " << minIdx[0] << endl;
cout << "maximum value in m1: " << maxVal << endl;
cout << " maxnimum value's Index is : " << maxIdx[1] << ", " << maxIdx[0] << endl << endl;
return 0;
}