C++ 为什么在opencv中,在图像的一半(垂直方向)上执行成像操作
我正在使用opencv进行非常简单的操作,但我无法理解为什么会出现此错误/问题。操作图像直到图像的一半(垂直)C++ 为什么在opencv中,在图像的一半(垂直方向)上执行成像操作,c++,opencv,image-processing,C++,Opencv,Image Processing,我正在使用opencv进行非常简单的操作,但我无法理解为什么会出现此错误/问题。操作图像直到图像的一半(垂直) matimg=imread(“/Users/tanmoy/Documents/345.jpg”); Mat输出=img.clone(); if(img.empty()) { cout因为您正在处理一个3通道图像(默认情况下加载imread),就像它是一个1通道图像一样(您正在使用.at访问它) 请确保处理灰度图像。请选择: 直接将其加载为灰度: Mat img = imread("/U
matimg=imread(“/Users/tanmoy/Documents/345.jpg”);
Mat输出=img.clone();
if(img.empty())
{
cout因为您正在处理一个3通道图像(默认情况下加载imread
),就像它是一个1通道图像一样(您正在使用.at
访问它)
请确保处理灰度图像。请选择:
直接将其加载为灰度:
Mat img = imread("/Users/tanmoy/Documents/345.jpg", IMREAD_GRAYSCALE);
Mat output = img.clone();
Mat img = imread("/Users/tanmoy/Documents/345.jpg"); // Default loads a 3 channel image
cvtColor(img, img, COLOR_BGR2GRAY);
Mat output = img.clone();
转换为灰度:
Mat img = imread("/Users/tanmoy/Documents/345.jpg", IMREAD_GRAYSCALE);
Mat output = img.clone();
Mat img = imread("/Users/tanmoy/Documents/345.jpg"); // Default loads a 3 channel image
cvtColor(img, img, COLOR_BGR2GRAY);
Mat output = img.clone();
请注意,您可以避免显式的for
循环:
使用:
使用矩阵二进制运算:
Mat output = img > 128;
请参见@user3465857,很高兴这有帮助;D请记住接受答案。抱歉,延迟接受答案……现在我做到了:)