Bonnypigpo 2022-11-07 15:01 采纳率: 50%
浏览 108
已结题

C6385 正在从t中读取无效数据

问题遇到的现象和发生背景

将一个yuv文件的y分量做直方图均衡化一直出现这个问题,输出的文件没有任何改变,求大lao指点
C6385 正在从t中读取无效数据

用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
#include <iostream>

int main(void)
{
    int width = 500;    // 图片的宽度
    int height = 500;    // 图片的高度
    int len = 250000;    // 文件大小 
    double nk[256]={0};//存放灰度值出现次数
    double p[256] = { 0 };//存放概率值
    double s[256]={0};//存放累加概率
    int t[256] = { 0 }; //归一化

    FILE* fin;
    fin = fopen("D:\\03\\video\\sucai\\seed.yuv", "rb");
    if (NULL == fin)
    {
        perror("open file is failed\n");
        return -2;
    }
    int len1 = 3 * len;
    unsigned char* buff = new unsigned char[len1];
    if (NULL == buff)
    {
        fprintf(stderr, "malloc data failed\n");
        fclose(fin);
        return -3;
    }
    unsigned char* data = new unsigned char[len1];
    if (NULL == buff)
    {
        fprintf(stderr, "malloc data failed\n");
        fclose(fin);
        return -4;
    }
    fread(buff, 1, len1, fin);
    fclose(fin);
    memcpy(data, buff, len1);//内存复制
    for (int i = 0; i < len; i++) //求每个灰度级出现的次数
    {
        if(buff[i]>=0&&buff[i]<=256)
            nk[buff[i]]++;
    }
    for (int i = 0; i < 256; i++) //求概率值
    {
        p[i] = nk[i] / len;
    }
    for (int i = 0; i < 256; i++) //求累加概率
    {
            s[i] = s[i] + p[i];
    }
    for (int i = 0; i < 256; i++)//映射
    {
        t[i] =(int)( 255 * s[i] + 0.5);
    }
    for (int i = 0; i < 256; i++)
    {
        buff[i] = t[buff[i]];
    }
    for (int i = 0; i < len; i++) 
    {
        if (buff[i] >= 0 && buff[i] < 256)
            data[i] =buff[i];
    }
    //u\v
    for (int i = 0; i >len&&i<len*3; i++)
        buff[i] = 128;

    FILE* fout;
    fout = fopen("D:\\03\\video\\sucai\\0seed.yuv", "wb+");
    if (NULL == fout)
    {
        perror("open file is failed\n");
        return -2;
    }
    else
    {
        fwrite(data, 1, len1, fout);
        fflush(fout);
        fclose(fout);
    }
    //free(buff);
    //free(data);
    return 0;

}
  • 写回答

2条回答 默认 最新

  • 於黾 2022-11-07 15:33
    关注

    rb是读取
    你要写入要用wb啊
    用rb能写入才怪

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月7日
  • 创建了问题 11月7日

悬赏问题

  • ¥15 sap for java
  • ¥15 如何添加系统级别的屏幕边框
  • ¥100 图像处理,如何优化使得清晰
  • ¥15 请求看看这个仿真电路哪里有问题?
  • ¥100 关于python拓展屏使用pyautogui.screenshot无法截图的问题
  • ¥15 有偿求答 无导出权限怎么快速导出企业微信微文档
  • ¥15 求解答,怎么数码管中这么加入闹钟或者传感器,这应该怎么加入相应的代码
  • ¥15 scottplot5
  • ¥30 想问问这个建模怎么编程没有思路
  • ¥15 关于imageENview(ImageEN)中新建图层并根据鼠标位置添加图标