繁体   English   中英

图像像素大小不等于opencv/C++

[英]Image pixels not equal size opencv/C++

我正在尝试使用 opencv2 预处理和显示图像以进行分类,但像素似乎没有正确格式化,我不确定格式化是否是正确的术语。 图像最初是 1080p,我使用 ffmpeg 裁剪并缩放到 480X800。 我得到了奇怪的结果,因此使用以下代码测试程序以覆盖一个简单的棋盘图案,其中所有正方形都应具有相同的大小和正方形-

std::string image_path = samples::findFile("/home/pi/test.jpg");
Mat img = imread(image_path, IMREAD_COLOR);
cv::cvtColor(img, img, COLOR_BGR2RGB);
for (int i = 0; i < 15 ; i++ ) {
  for (int j = 0; j < 25 ; j++ ) {
     int x;
     if ((i + j) % 2 == 0) x = 1;
     else x = 0;
     for (int a = i * 32; a < (i + 1) * 32 ; a++) {
       for (int b = j * 32; b < (j + 1) * 32 ; b++) {
         img.at<int>(a, b) = x * img.at<int>(a, b);
       }
     }
   }
 }

我得到以下

棋盘测试

原始图像看起来完全一样,没有任何拉伸或其他问题。 这显示在连接到树莓派的小型触摸屏上。 任何帮助将不胜感激。

我想通了,代码应该是 -

img.at<Vec3b>(a, b) = x * img.at<Vec3b>(a, b);

代替

img.at<int>(a, b) = x * img.at<int>(a, b);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM