C++/OpenCV:Mat初始化赋值误区

打印 上一主题 下一主题

主题 975|帖子 975|积分 2925

  1. #include <opencv2/opencv.hpp>
  2. #include <iostream>
  3. using namespace cv;
  4. using namespace std;
  5. int main() {
  6.     int pic_height = 2;
  7.     int pic_width = 2;
  8.     {
  9.         Mat alpha_map = Mat::ones(pic_height, pic_width, CV_32FC4);
  10.         cout << "alpha_map = " << endl << alpha_map << endl;
  11.         //alpha_map =
  12.         //    [1, 0, 0, 0, 1, 0, 0, 0;
  13.         //     1, 0, 0, 0, 1, 0, 0, 0]
  14.     }
  15.     {
  16.         Mat alpha_map = Mat::ones(pic_height, pic_width, CV_32FC4);
  17.         alpha_map.setTo(1);
  18.         cout << "alpha_map = " << endl << alpha_map << endl;
  19.         //alpha_map =
  20.         //    [1, 1, 1, 1, 1, 1, 1, 1;
  21.         //     1, 1, 1, 1, 1, 1, 1, 1]
  22.     }
  23.     {
  24.         Mat alpha_map(pic_height, pic_width, CV_32FC4, Scalar(1.0, 1.0, 1.0, 1.0));
  25.         cout << "alpha_map = " << endl << alpha_map << endl;
  26.         //alpha_map =
  27.         //    [1, 1, 1, 1, 1, 1, 1, 1;
  28.         //     1, 1, 1, 1, 1, 1, 1, 1]
  29.     }
  30.     return 0;
  31. }
复制代码
一直以为下面这样会将每个通道均初始化为1,导致一个bug调了半天根本没有怀疑过这里。
连deepseek和chatgpt也这样说,现实上只会对一个通道初始化。
   Mat alpha_map = Mat:nes(pic_height, pic_width, CV_32FC4);
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表