Python Bitwise OR

Python Bitwise OR

本文关键字:OR Bitwise Python      更新时间:2023-10-16

我有以下C++代码:

// Load image from vector
cv::Mat image = imread(filenames[i]);
//  option = black 
if (arg == "black" | arg == "all") 
{
// Extracting colors - BGR (black backround)
// Blue
inRange(image, Scalar(190, 0, 0), Scalar(255, 50, 50), blue);
// Green
inRange(image, Scalar(0, 190, 0), Scalar(50, 255, 50), green);
// Red
inRange(image, Scalar(0, 0, 190), Scalar(50, 50, 255), red);
// White
inRange(image, Scalar(235, 235, 235), Scalar(255, 255, 255), white);
// Silver
inRange(image, Scalar(180, 180, 190), Scalar(200, 200, 220), silver);           
// bitwise OR mask
mask = blue|green|red|white|silver;
}
//  option = wooden 
else
{
// Extracting colors - BGR (wooden backround)
// Blue
inRange(image, Scalar(190, 0, 0), Scalar(255, 50, 50), blue);
// Green
inRange(image, Scalar(0, 190, 0), Scalar(50, 255, 50), green);
// Red
inRange(image, Scalar(0, 0, 190), Scalar(50, 50, 255), red);
// White
inRange(image, Scalar(235, 235, 235), Scalar(255, 255, 255), white);
// Silver
inRange(image, Scalar(190, 190, 200), Scalar(220, 220, 230), silver);
// Black
inRange(image, Scalar(0, 0, 0), Scalar(40, 40, 40), black);

// bitwise OR mask
mask = blue|green|red|white|silver|black;

}

// Store mask points into a vector
vector<Point> pts;
findNonZero(mask, pts);

我想翻译成Python。我几乎完成了每个部分,但不是按位 OR 掩码部分。

我尝试了以下方法:

mask = np.logical_or.reduce((mask == blue, mask == green, mask == red, mask == white, mask == silver))

但是它对我不起作用。

此操作的 Python 等效项是什么?

在你的C++ 代码中没有逻辑或使用,只有按位 OR。因此,要在python中执行相同的操作,您应该按位或在那里使用(这是|,就像在C++中一样(,而不是逻辑。

所以

mask = blue|green|red|white|silver|black;

在C++应等效于

mask = blue|green|red|white|silver|black

在蟒蛇中。