非常によく似たトピックを見つけました: opencv cv::Mat を qimage に変換する方法、しかしそれは私の問題を解決しません。
cv::Mat を QImage に変換する関数があります
QImage cvMatToQImg(cv::Mat& mat)
{
cv::Mat rgb;
if(mat.channels()==1)
{
cv::cvtColor(mat,rgb,CV_GRAY2BGR);
cv::cvtColor(rgb,rgb,CV_BGR2BGRA);
QImage temp = QImage((unsigned char*)(rgb.data), rgb.cols,
rgb.rows,QImage::Format_ARGB32 );
QImage returnImage = temp.copy();
return returnImage;
}
それは私にとってはうまくいきますが、もっと効率的にしたいと思っています。最初: 2 つの cvtColor 関数を次のように変更する理由:
cv::cvtColor(mat,rgb,CV_GRAY2BGRA)
失敗する
QImage returnImage = temp.copy()
セグメンテーションあり。
次に、QImage のコピーを削除する方法。単純に一時画像を返すと、segfault が発生します。
そこで他の最適化を行うことができますか? 非常によく使う機能なので、できるだけ速くしたいです。