【发布时间】:2020-05-17 14:33:21
【问题描述】:
所以我正在制作这个项目,我在 OpenCV 上制作图像的反射(不使用翻转功能),完成它的唯一问题(我认为)是假设图像出来反映,出来是蓝色的。
我的代码(我拿出了常用的部分,问题应该在这里):
Mat imageReflectionFinal = Mat::zeros(Size(220,220),CV_8UC3);
for(unsigned int r=0; r<221; r++)
for(unsigned int c=0; c<221; c++) {
Vec3b intensity = image.at<Vec3b>(r,c);
imageReflectionFinal.at<Vec3b>(r,c) = (uchar)(c, -r + (220)/2);
}
///displays images
imshow( "Original Image", image );
imshow("Reflected Image", imageReflectionFinal);
waitKey(0);
return 0;
}
【问题讨论】:
-
在两个 for 循环中也有一个错误,这将导致您访问超过像素缓冲区末尾的内存。
Size(220,220)表示最大列(以及行)数是 219,而不是 220。 -
你希望
(uchar)(c, -r + (220)/2)做什么?
标签: c++ image opencv opencv3.0