OpenCV中LUT函数的使用
OPenCV版本:4.4
IDE:VS2019
功能描述
執(zhí)行一個(gè)矩陣的查找表的轉(zhuǎn)換。
函數(shù)LUT用查找表里的值填充輸出矩陣,條目索引來(lái)自于輸入矩陣,也就是說(shuō),函數(shù)按如下公式處理每個(gè)src的元素:
[dst(I)←lut(src(I)+d)][\texttt{dst} (I) \leftarrow \texttt{lut(src(I) + d)}] [dst(I)←lut(src(I)?+?d)]
這兒
函數(shù)原型
CV_EXPORTS_W void LUT(InputArray src, InputArray lut, OutputArray dst);參數(shù)描述
-
@參數(shù) src 8位元素的輸入矩陣
-
@參數(shù) lut 256個(gè)元素的查找表.如果輸入通道是多通道,查找表應(yīng)該具有一個(gè)單一的通道(這種情況下同樣的表被用于所有的通道)或者和輸入矩陣具有同樣的通道數(shù)。
-
@參數(shù)dst 輸出矩陣,和src具有同樣的大小和通道數(shù),和lut具有同樣的深度。
-
參考
convertScaleAbs, Mat::convertTo
源碼示例(單通道)
實(shí)現(xiàn)的是把一張圖的灰度0-128的變成0,128-200的變成128,其余的變成255
#include <iostream> #include <opencv2/opencv.hpp>int main() {cv::Mat image = cv::imread("D:\\OpenCVtest\\images\\juice.png");uchar lutTable[256];for (int i = 0; i < 256; i++){if (i <= 128){lutTable[i] = 0;}else if (i > 128 && i <= 200){lutTable[i] = 128;}else{lutTable[i] = 255;}}cv::Mat out;cv::Mat lut(1, 256, CV_8UC1, lutTable);cv::LUT(image, lut, out);imshow("原圖", image);imshow("lut", out);cv::waitKey(0);return 0; }運(yùn)算結(jié)果
輸入矩陣:
輸出矩陣:
源碼示例(三通道)
實(shí)現(xiàn)的是:
第一通道中灰度值0-128的變成0,灰度值129-200的變成128,灰度值201-255的變成200
第二通道中灰度值0-128的變成16,灰度值129-200的變成144,灰度值201-255的變成216
第三通道中灰度值0-128的變成32,灰度值129-200的變成176,灰度值201-255的變成255
運(yùn)算結(jié)果
輸入矩陣圖像:
輸出圖像:
總結(jié)
以上是生活随笔為你收集整理的OpenCV中LUT函数的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OpenCV中像素逻辑运算:逻辑非运算
- 下一篇: OpenCV中图像垂直拼接函数vconc