相关疑难解决方法(0)

在opencv中使用imwrite保存图像会写入所有黑色但正确显示imshow

原始问题

此示例代码将显示正确创建的图像,但将保存仅包含黑色像素的png.Mat是CV_32FC3格式,因此3个浮点数通道.

我发现的已回答的问题涉及图像处理问题或转换不正确或使用各种压缩保存在jpeg中.

#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
    int i = 0;
    int j = 0;

    Vec3f intensity;
     cv::Mat imageF;
    imageF= cv::Mat::zeros(36,36,CV_32FC3);

    for(j=0;j<imageF.cols;++j){
    for(i=0;i<imageF.rows;++i){
        intensity = imageF.at<Vec3f>(j, i);
        intensity.val[2] = 0.789347;
        intensity.val[1] = 0.772673;
        intensity.val[0] = 0.692689;
        imageF.at<Vec3f>(j, i) = intensity;
    }}
    imshow("Output", imageF);  
    imwrite("test.png", imageF);

    waitKey(0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

需要进行哪些更改才能使其按预期保存?

Berriel的解决方案

#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace std;
using namespace cv;

int main() {
    int i = 0;
    int j = …
Run Code Online (Sandbox Code Playgroud)

c++ opencv

10
推荐指数
1
解决办法
5834
查看次数

标签 统计

c++ ×1

opencv ×1