OpenCV中像素逻辑运算:逻辑或运算
生活随笔
收集整理的這篇文章主要介紹了
OpenCV中像素逻辑运算:逻辑或运算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
OPenCV版本:4.4
IDE:VS2019
功能描述
計算兩個矩陣的每個像素的邏輯或運算,或者是一個矩陣和一個 scalar:
-
兩個矩陣的大小要一樣:
[dst(I)=src1(I)∨src2(I)ifmask(I)≠0][\texttt{dst} (I) = \texttt{src1} (I) \vee \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0] [dst(I)=src1(I)∨src2(I)if?mask(I)?=0] -
如果是一個矩陣和一個scalar,src2是由和src1.channels()一樣的元素數量的 Scalar組成。
[dst(I)=src1(I)∧src2ifmask(I)≠0][\texttt{dst} (I) = \texttt{src1} (I) \wedge \texttt{src2} \quad \texttt{if mask} (I) \ne0] [dst(I)=src1(I)∧src2if?mask(I)?=0]
- 如果是一個scalar和一個矩陣,src1是由和src2.channels()一樣的元素數量的 Scalar組成。
[dst(I)=src1∧src2(I)ifmask(I)≠0][\texttt{dst} (I) = \texttt{src1} \wedge \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0] [dst(I)=src1∧src2(I)if?mask(I)?=0]
如果是浮點數的矩陣,由機器決定的位表示法(通常是 IEEE754)來進行操作,如果是多通道矩陣,每個通道單獨處理,以上第二和第三種情況下, scalar首先要轉換成矩陣類型。
函數原型
CV_EXPORTS_W void bitwise_or(InputArray src1, InputArray src2,OutputArray dst, InputArray mask = noArray());參數描述
- @參數 src1 第一個輸入矩陣或一個 scalar
- @參數 src2 第二個輸入矩陣或一個 scalar
- @參數 dst 輸出矩陣,和輸入矩陣同樣大小和類型.
- @參數 mask 可選操作,8位單通道矩陣,確定輸出矩陣將要改變的元素.
源碼示例
#include <iostream> #include <opencv2/opencv.hpp>int main() {cv::Mat image = cv::imread("D:\\OpenCVtest\\images\\juice.png");cv::Mat mask(image.rows, image.cols, CV_8UC3, cv::Scalar(0, 0, 0));std::cout << image.rows << " "<< image.cols;cv::Rect r(150, 280, 80, 100); rectangle(mask, r, cv::Scalar(255, 255, 255), -1);cv::Mat out;bitwise_or(image, mask, out);cv::imshow("第一個矩陣原圖", image);cv::imshow("第二個矩陣原圖", mask);cv::imshow("位或運算結果圖", out);cv::waitKey(0);return 0; }運算結果
第一個輸入矩陣:
第二個輸入矩陣:
輸出矩陣:
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的OpenCV中像素逻辑运算:逻辑或运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV中像素逻辑运算:逻辑与运算
- 下一篇: OpenCV中像素逻辑运算:逻辑非运算