• 5081阅读
  • 12回复

哪位能帮我看看这个程序错在哪? [复制链接]

上一主题 下一主题
离线hetaohao
 
只看楼主 倒序阅读 楼主  发表于: 2009-04-29
imageprocess.rar (1191 K) 下载次数:24 我以为在打开图像那块,就是不会改,哪位高手指点一下下,谢了
离线cooljeff
只看该作者 1楼 发表于: 2009-04-29
ImageProcess::open()里面的
imageLabel->setPixmap(QPixmap::fromImage(image));
改为:imageLabel->setPixmap(QPixmap::fromImage(*image));
编译没有错了,但是运行有错
离线cooljeff
只看该作者 2楼 发表于: 2009-04-29
QImage *image;
改为:QImage *image = new QImage;
运行也没有错了
离线hetaohao
只看该作者 3楼 发表于: 2009-04-29
先谢了,但是打开图片转化成灰度图是还是运行错误
离线20044454
只看该作者 4楼 发表于: 2009-04-29
难道你们的系统大小写不区分? 我系统提示我头文件 大小都有问题
让我做一个Qt的大牛!!!!
离线hetaohao
只看该作者 5楼 发表于: 2009-04-29
具体我也不知道,能换种方式打开图片也行
离线cooljeff
只看该作者 6楼 发表于: 2009-04-29
引用第3楼hetaohao于2009-04-29 10:42发表的 :
先谢了,但是打开图片转化成灰度图是还是运行错误

open里面的QImage *image = new QImage;
改为image = new QImage;
你已经定义了一个成员变量了。这样灰度化时就没有错了,不过我觉得你的灰度化还是有问题
离线hetaohao
只看该作者 7楼 发表于: 2009-04-29
引用第6楼cooljeff于2009-04-29 11:13发表的  :
open里面的QImage *image = new QImage;
改为image = new QImage;
你已经定义了一个成员变量了。这样灰度化时就没有错了,不过我觉得你的灰度化还是有问题

确实有问题,能指点一下吗?
离线hetaohao
只看该作者 8楼 发表于: 2009-04-29
void ImageProcess::grayscale()
{dst=*image;
    int width = image->width();
    int height = image->height();
    for (int h=0;h<height;h++)
    {
        for (int w=0;w<width;w++)
        {
          int r = qRed(image->pixel(w,h));
          int g = qGreen(image->pixel(w,h));
          int b = qBlue(image->pixel(w,h));
          int n=int(0.299*r+0.587*g+0.114*b+0.5);
          dst.setPixel(w,h,qRgb(n,n,n));
        }
     }
    resize(dst.width(),dst.height());
    repaint();

}
void ImageProcess::paintEvent(QPaintEvent * e)
{
    QPainter painter(this);
    painter.drawImage(0,0,dst);
}加上这个还是不响应啊
离线cooljeff
只看该作者 9楼 发表于: 2009-04-29
下面这个是我以前写的,image为原图像,grayImage为灰度化后的图像。
   QSize imageSize = image.size();
    int width = image.width();
    int height = image.height();
    int bytesPerLine = ((width * 8 + 31) / 32 ) * 4;
    unsigned char *colourImgDataPtr = image.bits();
    QImage grayImage(imageSize, QImage::Format_Indexed8);
    unsigned char *grayImageDataPtr = grayImage.bits();

    for(int i = 0; i < height; i++)
    {
        for(int j = 0; j < width; j++)
        {
            grayImageDataPtr[i * bytesPerLine + j] = 0.299 * (*colourImgDataPtr) +
                         0.587 * (*(colourImgDataPtr + 1)) + 0.114 * (*(colourImgDataPtr + 2));
            colourImgDataPtr += 4;
        }
    }
    QVector<QRgb> grayColourTable;
    unsigned int rgb = 0xff000000;
    for(int i = 0; i < 256; i++)
    {
        grayColourTable.append(rgb);
        rgb += 0x00010101;
    }
    grayImage.setColorTable(grayColourTable);
离线hetaohao
只看该作者 10楼 发表于: 2009-04-29
看不明白,呵呵,能给我看看全部源码吗?谢了
离线cooljeff
只看该作者 11楼 发表于: 2009-04-29
引用第10楼hetaohao于2009-04-29 16:13发表的  :
看不明白,呵呵,能给我看看全部源码吗?谢了

这个是我之前写的图像处理程序,只写了一部分,后面的没有时间写了。是用的多文档,你看看对你有没有用。
ImageProcess.rar (58 K) 下载次数:5
离线hetaohao
只看该作者 12楼 发表于: 2009-04-29
引用第11楼cooljeff于2009-04-29 16:26发表的  :
这个是我之前写的图像处理程序,只写了一部分,后面的没有时间写了。是用的多文档,你看看对你有没有用。
[图片]

谢了,好人啊
快速回复
限100 字节
 
上一个 下一个