簡體   English   中英

OpenCV - 從圖像中獲取灰度值

[英]OpenCV - get grey value from an image

大家好,現在我正在嘗試為圖像中的每個像素獲取灰度值,我的意思是灰度值是圖像中的白色或黑色級別,假設白色為 0,黑色為 1。 以這張圖片為例

在此處輸入圖片說明

我想要的價值就像

 0 0 0 0 0 0
 0 1 1 1 0 0
 0 0 1 1 0 0
 0 0 1 1 0 0
 0 0 1 1 0 0
 0 0 1 1 0 0
 0 0 1 1 0 0
 0 0 0 0 0 0

這可能嗎? 如果是的話,如何用 C 中的 OpenCV 做到這一點? 或者如果使用 OpenCV 是不可能的,是否還有其他庫可以做到這一點?

你問的當然是可能的,但如何做到取決於很多事情。 如果您使用 C++,那么我們通常希望您使用 C++ 接口,這意味着您有一個cv::Mat對象並使用以下內容加載圖像:(使用命名空間 cv)

#include <opencv2/core/core.hpp>
Mat mat_gray = imread(path, CV_LOAD_IMAGE_GRAYSCALE);

或由

Mat mat = imread(path); // and assuming it was originally a color image...
Mat mat_gray;
cvtColor(mat, mat_gray, CV_BGR2GRAY); //...convert it to grayscale.

現在,如果你只想一個一個地訪問像素值,你可以使用_Tp& mat.at<_Tp>(int x,int y); . 那是:

for(int x=0; x<mat_gray.rows; ++x)
  for(int y=0; y<mat_gray.cols; ++y)
    mat_gray.at<uchar>(x,y); // if mat.type == CV_8U

您可以在此處查找您的類型,如果 mat.type 不是 CV_8U,您應該使用它代替 uchar。

至於純C接口,你可以查看這個答案 但是如果你使用 C++,你絕對應該使用 C++ 接口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM