小编sle*_*nja的帖子

图像下采样算法

什么是我可以用来将图像分成原始大小一半的最佳重采样算法.速度是最重要的,但它不应该降低质量太差.我基本上试图生成图像金字塔.

我本来打算跳过像素.这是最好的方式吗?从我所看到的,像素跳过产生的图像太尖锐了.有人试过这个评论.我的图片包含这样的地图数据.

c c++ image-manipulation image image-processing

19
推荐指数
3
解决办法
2万
查看次数

一个棘手的OOP问题我从来没有理解过

假设我有两个.cpp文件:oranges.cppbasket.cpp.他们分别有班级orange和班级basket.我的main程序产生许多baskets这反过来又产生许多oranges.所以基本上,main会有很多对象Baskets; 并且baskets将有许多对象Oranges.如果我有一个功能orange,需要知道我的篮子的颜色,我将如何找到篮子的颜色?

orangle.cpp

class oranges
{
    void whichColorBasket()
    {
        // get the color of the basket the orange is in...?
    }
}
Run Code Online (Sandbox Code Playgroud)

basket.cpp

class basket
{
    int color;

    void basket()
    {
        for(int i = 0; i < 10; i++)              
            oranges *o = new oranges;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我的语法可能不完美,但我如何basket从函数中获取数据库orange(orange是由创建的对象basket …

c++ oop visual-c++

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

使用QGraphicsScene和QGraphicsView平铺

我正在创建一个在Qt中打开大图像(2gb +)的图像可视化工具.我是通过将大图像分成几个512X512的图块来做到这一点的.然后我加载原始图像大小的QGraphicsScene并使用addPixmap将每个图块添加到QGraphic场景上.所以最终它看​​起来像是一个巨大的图像给最终用户,实际上它是一个连续阵列的小图像粘在一起的场景.首先,这是一个好方法吗?

尝试将所有图块加载到场景中会占用大量内存.所以我想只加载视图中可见的图块.我已经设法将QGraphicsScene子类化并覆盖其拖动事件,从而使我能够根据移动知道接下来需要加载哪些切片.我的问题是跟踪滚动条上的移动.有没有什么办法可以创建一个每次滚动条移动时调用的事件.不能选择QGraphicsView的子类.

c++ qt image qt4 qgraphicsview

8
推荐指数
2
解决办法
4709
查看次数

在Qt中处理非常大的图像

我无法让Qt处理超过10,000X10,000的图像.我正在处理大约每个2GB的巨大卫星图像.我考虑使用内存映射,但图像仍然占用内存空间.

QFile file("c://qt//a.ras");
file.open(QIODevice::ReadOnly);
qint64 size = file.size();
uchar *img=file.map(0,size);
QImage I(img,w,h,QImage::Format_ARGB32);
Run Code Online (Sandbox Code Playgroud)

谁能告诉我一个更有效的方法来处理Qt中的大图像?

c++ qt large-files

3
推荐指数
2
解决办法
3188
查看次数

快速图像处理

我有一个10X10的数组,其值介于1到10之间.现在说我想给每个值一个独特的颜色(Say 1得到蓝色2变红等).我正在使用qt qimage来表示图像.这就是我正在做的事情

read array from disk. store in a[10][10]
generate a hash table in which each value in the array has a corresponding qRGB
for entire array
    get value (say a[0][0])
    search hashtable, get equivalent qRGB
    image.setPixel(coord,qRGB)
Run Code Online (Sandbox Code Playgroud)

这是我能做到这一点的最快方式吗?我有一个大图像,扫描每个像素,在哈希表中搜索其值,设置像素有点慢.有更快的方法吗?

c c++ qt image-processing qimage

3
推荐指数
1
解决办法
3537
查看次数

有效编辑图像中的像素

我有一个包含黑色(0)和白色(255)像素的8位图像(存储在数组中).假设我想将图像中的所有黑色像素更改为灰色(例如120)像素.什么是我可以将黑色变为灰色的最快方式.

我想到了两种方法 -

  1. 开始检查图像中的每个像素.一旦找到黑色像素,就将其更改为灰色.继续直到图像结束.(更慢但更容易)

  2. 开始检查像素.当发现黑色像素时,保持计数器以跟踪它.继续递增计数器直到下一个白色像素.然后转到计数器并使用像memset这样的快速函数将一组黑色像素更改为灰色.(不确定,但我认为这可能会更快)

我有一个巨大的1GB图像,因此方法1非常慢.是否有更好(更快)的方式来更改/编辑像素?

c c++ optimization image image-processing

0
推荐指数
1
解决办法
973
查看次数