问题:
OpenCV 2中使用Mat图像数据进行ROI提取子图像的操作时,获取的子图像与源图像依然存在联系。
Mat big = imread(....);
Mat sub = big(ROI); // 获取big的ROI区域子图
// 修改sub图像像素,big跟随变化
// 修改big图像像素, sub跟随变化
很奇怪对不对?? 具体原因,后续继续探究!
代码:
int main() { // Mat big = Mat::zeros (400, 600, CV_8U); if (!big.empty()) { Rect roi (150, 100, 300, 200); Mat smll = big (roi); // for (int row = 0; row < smll.rows; row++) { for (int col = 0; col < smll.cols; col++) { smll.at<uchar> (row, col) = 255; } } // for (int row = 200; row < 300; row++) { for (int col = 400; col < 500; col++) { big.at<uchar> (row, col) = 127; } } imshow ("big", big); imshow ("smll", smll); waitKey (0); return 0; } // return 0; }运行:
说明:
