QImageでQRectを使用してROIを適切に変換および/または表示できず、QImageからcv :: Matイメージを作成できません。 問題は対称的です。つまり、cv :: Matでcv :: Rectを使用し、MatからQImageを作成してROIを正しく取得できません。意外にも、cv :: RectまたはQRectの幅と高さが等しいときは、すべてうまく動作します。ROIをQImageとの間で変換する方法/ cv :: Matから変換する方法
次に、私のフルサイズの画像はcv :: Mat matImageです。これは、下のスクリーンショットは、問題を示しているタイプCV_8U
のものであり、2048×2048
int x = 614;
int y = 1156;
// buggy
int width = 234;
int height = 278;
//working
// int width = 400;
// int height = 400;
QRect ROI(x, y, width, height);
QImage imageInit(matImage.data, matImage.cols, matImage.rows, QImage::Format_Grayscale8);
QImage imageROI = imageInit.copy(ROI);
createNewImage(imageROI);
unsigned char* dataBuffer = imageROI.bits();
cv::Mat tempImage(cv::Size(imageROI.width(), imageROI.height()), CV_8UC1, dataBuffer, cv::Mat::AUTO_STEP);
cv::namedWindow("openCV imshow() from a cv::Mat image", cv::WINDOW_AUTOSIZE);
cv::imshow("openCV imshow() from a cv::Mat image", tempImage);
の正方形の大きさを持っています。
(左)フルサイズcv::Mat matImage
。 (中)QImage
とQRect
(おおよそ手で描かれた緑色の長方形に相当)の予想される結果。 (右)cv::Mat matImageROI
私はQt 5.6とopenCV 3.1、Mac OS X 10.10.5、Macbook Pro Retinaを使用しています。 –