Per copertura uso Uimage.copyTo(image)
o image=Uimage.getMat(cv::ACCESS_READ)
ma in alcuni casi, in alcuni casi, genera problemi con la riassegnazione dei dati.
Se si desidera utilizzare il numero UMat
a livello globale per tutti, è possibile che sia presente qualche limitazione con l'uso UMat
. E potrebbe essere meglio avere il metodo di riserva con Mat
se l'operazione con UMat
ha un errore di violazione di accesso.
clearReadyResultImage();
qDebug()<<"vpOpenCV::blurImage, try GPU cv::blur";
try{
cv::blur(Uimage, UresultImage, cv::Size(ksize, ksize));
UresultImageReady=!UresultImage.empty();
}
catch (cv::Exception& ex) {
qWarning()<<"vpOpenCV::blurImage error"<<ex.what();
}
if (!UresultImageReady) {
checkReadyImage();
qDebug()<<"vpOpenCV::blurImage, try CPU cv::blur";
try{
cv::blur(image, resultImage, cv::Size(ksize, ksize));
resultImageReady=!resultImage.empty();
}
catch (cv::Exception& ex) {
qWarning()<<"vpOpenCV::blurImage error"<<ex.what();
}
}
...
void checkReadyImage(){
if (!imageReady && UimageReady){
Uimage.copyTo(image);
imageReady=!image.empty();
}
}
@mans - ha fatto questo lavoro? – Kiran
C'è qualche documentazione [qui] (http://docs.opencv.org/master/d3/d63/classcv_1_1Mat.html#ad3b86ff70d06f7e567e51d8d215c85cd), ma in effetti è ancora piuttosto criptico ... – Antonio