3

PyQt 内から QImage を OpenCV の (CV2) Mat 形式に変換する関数を作成しようとしています。

どうすればいいですか?これまで扱ってきた入力画像は、QImage として読み込まれた PNG (RGB または RGBA) です。

最終的には、2 つの QImage を取得し、matchTemplate 関数を使用して 1 つの画像を別の画像から見つけたいと考えています。そのため、現在見つけているよりも良い方法があれば、それも受け入れます。しかし、2 つの間で簡単に相互に変換できることが理想的です。

ご協力いただきありがとうございます、

4

2 に答える 2

3

ここで多くの検索を行った後、実用的なソリューションを提供する宝石を見つけました。この回答から別の質問へのコードの多くを導き出しました: https://stackoverflow.com/a/11399959/1988561

私が抱えていた主な課題は、ポインターを正しく使用する方法でした。私が欠けていたと思う大きなものはsetsize関数でした。

これが私の輸入品です:

import cv2
import numpy as np

これが私の機能です:

def convertQImageToMat(incomingImage):
    '''  Converts a QImage into an opencv MAT format  '''

    incomingImage = incomingImage.convertToFormat(4)

    width = incomingImage.width()
    height = incomingImage.height()

    ptr = incomingImage.bits()
    ptr.setsize(incomingImage.byteCount())
    arr = np.array(ptr).reshape(height, width, 4)  #  Copies the data
    return arr
于 2013-08-26T17:50:19.547 に答える