gpt4 book ai didi

c++ - 用 .at() 分配白色不起作用

转载 作者:行者123 更新时间:2023-11-28 05:39:23 26 4
gpt4 key购买 nike

我为 future 的腐 eclipse 实现编写了这个算法。我正在测试算法,但我遇到了这个问题:

当我尝试用白色为所有像素上色时,我得到的图像包含黑白两列,否则,如果我将每个像素设置为黑色,它就会起作用。我该如何解决?

这是我的代码

Mat Morph_op_manager::erode_img(Mat image) {

//stucture element attribute

int strel_rows = 5;
int strel_cols = 5;

// center structure element attribute
int cr = 3;
int cc = 3;

//number of columns/rows after strel center
int nrac = strel_rows - cr ;
int ncac = strel_cols - cr ;


int min_val = 255;



for (int i = cr-1 ; i <image.rows-nrac ; i++) {
for (int j = cc-1; j < image.cols-ncac ; j++) {

for (int ii = 0; ii <strel_rows ; ii++) {
for (int jj = 0; jj <strel_cols ; jj++) {

image.at<int>(i-(nrac-ii),j-(ncac-jj)) = 255;
}
}
}
}

我在 C++ 中使用 opencv,文件是黑白图像 .tiff。这是我的 output

最佳答案

我不明白你是如何声明你的 image 的对象,但我敢打赌它的类型是 CV_8U .

当你访问你应该写的像素时 image.at<uchar>((i-(nrac-ii),j-(ncac-jj))而不是 image.at<int>((i-(nrac-ii),j-(ncac-jj)) .那是因为您声明矩阵中的数据为 uchar (CV_8U) 而不是 int (CV_32S)。

关于c++ - 用 .at() 分配白色不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37499726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com