如何在 OpenCv 中将 cv::Mat 转换为灰度
How can I convert a cv::Mat to a gray scale in OpenCv?
如何将cv::Mat转换为灰度?
我正在尝试从opencv运行drawKeyPoints函数,但是我遇到了断言归档错误。我的猜测是,它需要接收参数中的灰度图像而不是彩色图像。
void SurfDetector(cv::Mat img){
vector<cv::KeyPoint> keypoints;
cv::Mat featureImage;
cv::drawKeypoints(img, keypoints, featureImage, cv::Scalar(255,255,255) ,cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
cv::namedWindow("Picture");
cv::imshow("Picture", featureImage);
}
使用 C++ API,函数名称略有更改,现在写入:
#include <opencv2/imgproc/imgproc.hpp>
cv::Mat greyMat, colorMat;
cv::cvtColor(colorMat, greyMat, CV_BGR2GRAY);
主要困难在于该功能在 imgproc 模块中(而不是在核心中),并且默认情况下 cv::Mat 采用蓝绿红 (BGR) 顺序,而不是更常见的 RGB。
OpenCV 3
从OpenCV 3.0开始,还有另一种约定。转换代码嵌入在命名空间cv::
中,并以 COLOR
为前缀。因此,示例变为:
#include <opencv2/imgproc/imgproc.hpp>
cv::Mat greyMat, colorMat;
cv::cvtColor(colorMat, greyMat, cv::COLOR_BGR2GRAY);
据我所知,包含的文件路径没有改变(这不是错字)。
可能对
迟到者有所帮助。
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
if (argc != 2) {
cout << "Usage: display_Image ImageToLoadandDisplay" << endl;
return -1;
}else{
Mat image;
Mat grayImage;
image = imread(argv[1], IMREAD_COLOR);
if (!image.data) {
cout << "Could not open the image file" << endl;
return -1;
}
else {
int height = image.rows;
int width = image.cols;
cvtColor(image, grayImage, CV_BGR2GRAY);
namedWindow("Display window", WINDOW_AUTOSIZE);
imshow("Display window", image);
namedWindow("Gray Image", WINDOW_AUTOSIZE);
imshow("Gray Image", grayImage);
cvWaitKey(0);
image.release();
grayImage.release();
return 0;
}
}
}
相关文章:
- 将 cv::mat 转换为 QImage
- 将 cv::Mat 转换为 std::vector 的通用函数
- 如何将 cv::Mat 转换为 vtkImageData?
- Qt-工作线程崩溃时将cv::Mat转换为QImage
- 将 cv::Mat 转换为无符号的 int 像素
- 如何在不复制数据的情况下将 cv::Mat 转换为 2d 标准::矢量
- 转换 cv::mat 转换为 std::矢量<double>并发症
- 将CV :: MAT转换为STD :: vector而无需复制
- 如何将cv::Mat转换为带有颜色的pcl::点云
- 将 cv::Mat 转换为穿山甲::图像
- c++ OpenCV:将mat转换为base64,反之亦然
- 将 OpenCV Mat 转换为 array(可能是 NSArray)
- 如何在OpenCV 3.0中将Mat转换为cvMat
- 如何将'cv::Mat'转换为"双倍"?
- Lib-svm,如何将MyModel.mat转换为MyModel.model
- 如何将简历::Mat转换为简历::Rect
- 错误 C2664:'cvSaveImage':无法将参数 2 从 'cv::Mat' 转换为 'const CvArr *'
- OpenCV表单应用程序 - 将Mat转换为灰度
- OpenCV:将 Mat 转换为 UChar4
- 使用 QImage::loadFromData 将 cv::mat 转换为 QImage