这是我在visual studio c ++中的代码,
//draw a line onto the frame
line(imgFrame2Copy, Point(0, imgFrame2Copy.rows / 2), Point(imgFrame2Copy.cols, imgFrame2Copy.rows / 2), Scalar(0), 3);
//display the result
line(imgFrame2Copy, Point(0, imgFrame2Copy.rows / 8), Point(imgFrame2Copy.cols, imgFrame2Copy.rows / 8), Scalar(0), 3);
//wait some time for the frame to render
waitKey(30);
drawCarCountOnImage(carCount, imgFrame2Copy);
cv::imshow("imgFrame2Copy", imgFrame2Copy);
//cv::waitKey(0); // uncomment this line to go frame by frame for debugging
// now we prepare for the next iteration
我想添加一个变量来引用功能line(imgFrame2Copy, Point(0, imgFrame2Copy.rows / 2), Point(imgFrame2Copy.cols, imgFrame2Copy.rows / 2), Scalar(0), 3);
你能帮助我吗
cordialy。
答案 0 :(得分:1)
如果您可以访问现代C ++(C ++ 11或更高版本),则可以使用lambda(如R Sahu所述):
auto drawMyLine = [imgFrame2Copy](int denominator) {
line(imgFrame2Copy,
Point(0, imgFrame2Copy.rows / denominator),
Point(imgFrame2Copy.cols, imgFrame2Copy.rows / denominator),
Scalar(0),
3);
};
drawMyLine(2);
请注意,通过按值捕获我假设的OpenCV矩阵cv::Mat
,您可以复制引用计数对象,以便lambda 可以一生的持续时间。也就是说,如果你创建了太多这些,你可能会耗尽内存; - )
否则,您可以使用C ++ 98风格的仿函数:
struct DrawMyLine {
void operator()(cv::Mat& imgFrame2Copy, int denominator) {
line(imgFrame2Copy,
Point(0, imgFrame2Copy.rows / denominator),
Point(imgFrame2Copy.cols, imgFrame2Copy.rows / denominator),
Scalar(0),
3);
}
};
DrawMyLine drawLine;
drawLine(imgFrame2Copy, 2);