假設我需要在Qt創建器中顯示openCV圖像。如何創建新類以部署opencv和對象的方法
我的圖像用cv :: Mat類型聲明,但openCV沒有允許將圖像放入Qt應用程序GUI的成員。此外,我希望我的代碼能夠使用以下語法:「image.displayinGUI()」(其中圖像是cv :: Mat類型)。我知道如何在Qt中顯示圖像,但我不知道在我的程序中合理地部署正確的設計模式(我認爲問題是在C++中繼承,但無法解決它。提醒,我不問任何問題確切的問題,比如Qt或者openCV,我想知道如何在不編輯舊代碼的情況下將新方法添加到舊對象中,您可以使用Qt,opencv expample或者C++中的任何東西來給出建議!
那麼,我該怎麼辦?
(我很抱歉因爲我的C++的新手,我的英語不是很好)
我寫了這個場景,但它沒有工作:
class usergui : public cv::Mat {
public:
displayinGUI(QLabel* label) {
cv::Mat newimg = this->clone();
cv::cvtColor(newimg , newimg , CV_BGR2RGB);
QImage image = QImage((const unsigned char*)newimg.data , newimg.cols , newimg.rows , QImage::Format_RGB888);
label->setPixmap(QPixmap::fromImage(image));
label->resize(label->pixmap()->size());
}
}
// in main program:
/* ... */
cv::Mat myimage;
myimage.imread("lenna.png");
myimage.displayinGUI(myQtlabel); // this cause an error: "cv::Mat has no member named "displayinGUI()"
/* ...*/
的可能重複[如何轉換OpenCV的CV ::墊的QImage(HTTP://計算器。 com/questions/5026965/how-to-convert-an-opencv-cvmat-to-qimage) – Kiran
這只是一個例子。另外,我認爲使用類非常方便,特別是如果我想重用我的代碼! –
「無需編輯舊代碼即可將新方法添加到舊對象」?這基本上是繼承的原因,你的**精確**問題是什麼? –