我有一個圖像,我試圖使用QImage ::轉換(const QTransform &矩陣,Qt :: TransformationMode模式)const方法來轉換選定的圖像部分。 但是這個方法返回null圖像。另外Qt寫到std輸出:「Qimage:內存不足,返回空映像。」QImage transfrom返回null
QImage img;
img.load("D:\\3.png");
QPolygonF polygonIn;
polygonIn << QPointF(73, 63)
<< QPointF(362, 22)
<< QPointF(517, 325)
<< QPointF(1, 210);
QPolygonF polygonOut;
polygonOut << QPointF(45, 39)
<< QPointF(228, 13)
<< QPointF(228, 198)
<< QPointF(180, 198);
QTransform transform;
auto isOk = QTransform::quadToQuad(polygonIn, polygonOut, transform);
if(!isOk)
throw std::runtime_error("Transformation impossible with such parameters.");
auto result = img.transformed(transform, Qt::TransformationMode::SmoothTransformation);
我試過調試QImage源代碼。 On line 6633 of qimage.cpp
QImage dImage(wd, hd, target_format);
QIMAGE_SANITYCHECK_MEMORY(dImage);
wd和hd值很大。
也許有人知道我該如何解決這個問題。順便說一句,我使用qt 4.8.4。 感謝您的幫助。
什麼是圖像的寬度和高度?據我所知,如果它們大於〜32000像素,則可能是加載這樣的圖像的問題。 – vahancho
我的輸入圖像是s29.postimg.org/k45fwbmsn/Untitled.png,我想將它轉換成黃色多邊形s9.postimg.org/3rcfnjej3/Untitled_Transform.png這一點實際上是角落的座標。 – yaroslav
你的多邊形肯定是不正確的,併產生具有比例因子〜1e + 6的異常變換。這就是爲什麼你得到空圖像。 – vahancho