gpt4 book ai didi

c++ - 读取图像中像素的值并保存在文件中 OpenCv

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:29 24 4
gpt4 key购买 nike

我使用代码读取图像(彩色或灰度),如果它是彩色的,则将其转换为灰度,读取每个像素,然后保存在 txt 文件中但我遇到了问题。当我运行该程序时,它返回此错误:

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv::cvtColor, file C:\builds\2_4_PackSlave-win32-vc12-shared\opencv\modules\imgproc\src\color.cpp, line 3737

问题出在哪里?我发帖代码:

#include <opencv2/opencv.hpp>
using namespace cv;

#include <fstream>
using namespace std;


int main(int argc, char** argv)
{
Mat colorImage = imread("aust.jpg");

// First convert the image to grayscale.
Mat grayImage;
cvtColor(colorImage, grayImage, CV_RGB2GRAY);

// Then apply thresholding to make it binary.
Mat binaryImage(grayImage.size(), grayImage.type());


// Open the file in write mode.
ofstream outputFile;
outputFile.open("Myfiles.txt");

// Iterate through pixels.
for (int r = 0; r < grayImage.rows; r++)
{
for (int c = 0; c < grayImage.cols; c++)
{
int pixel = grayImage.at<uchar>(r, c);

outputFile << pixel << " ";
}
outputFile << "-1 ";
}

// Close the file.
outputFile.close();
return 0;
}

我尝试读取这样的图像:

enter image description here

感谢大家的帮助。

最佳答案

您可以直接将图像加载为灰度,因此您无需手动进行转换:

Mat grayImage = imread("aust.jpg", CV_LOAD_IMAGE_GRAYSCALE);

如果您想读取彩色图像然后转换为灰度图像,您应该使用 CV_LOAD_IMAGE_COLOR 标志调用 cv::imread


顺便说一下,评论下面的行

// Then apply thresholding to make it binary.

不应用阈值。我猜您打算使用 cv::threshold

关于c++ - 读取图像中像素的值并保存在文件中 OpenCv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35580160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com