Opencv:获取所有" Point"存储在" Mat"

时间:2017-07-20 07:56:40

标签: c++ opencv

我使用 findNonZero(img,nonZeroCoordinates)将所有非零存储在 nonZeroCoordinates 中,这是 Mat

现在我想将所有这些存储在 vector 中,以便进一步处理。我的问题是" 是否有可能以简单的方式将所有积分存储在垫子中?"

据我所知,我可以遍历 nonZeroCoordinates 并将所有点一个一个地存储在向量中。

# if in development, just send the json to check
if Rails.env.development?
  send_data json.to_json, :filename => 'account_statement.json', :type => 'application/json', :disposition => 'attachment'
else  
  begin
    send_data generate_report(json.to_json), :filename => 'account_statement.pdf', :type => 'application/pdf', :disposition => 'attachment'
  rescue => e
    raise 'Report server is not available, Please try again later'
  end
end

如您所见,代码看起来非常冗余。是否可以使其更简单?

1 个答案:

答案 0 :(得分:0)

OpenCV的findNonZero功能除了点矢量外,还可以作为输出参数。 您可以将其直接存储在向量中,而不是将结果存储在Mat对象中,如下所示:

vector<Point> inds;
cv::findNonZero(inputMatrix, inds);