[英]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.