我是 OpenCV 的新手,刚刚开始筛选 API。我打算获取构成图像的每个像素的颜色、强度和纹理值。我正在摆弄结构 - IplImage 开始但无法取得太大进展。
请让我知道有什么方法可以做到这一点。
干杯
我是 OpenCV 的新手,刚刚开始筛选 API。我打算获取构成图像的每个像素的颜色、强度和纹理值。我正在摆弄结构 - IplImage 开始但无法取得太大进展。
请让我知道有什么方法可以做到这一点。
干杯
你试过OpenCV 2.0吗?他们有一个新的 C++ 接口,使事情变得更容易。您可以使用他们的新 Mat 类来加载图像、有效地访问像素等。它比 IplImage 有趣得多。我使用 \doc\opencv.pdf 作为我需要的任何东西的参考。它有教程和带有新 C++ 接口的示例等 - 足以让您入门。
如果您有更多具体的 OpenCV 问题,请随时提问。
这里有一些演示代码可以帮助您入门:(我使用了 cv 命名空间):
// Load the image (looks like MATLAB :) ? )
Mat M = imread("h:\\lena.bmp");
// Display
namedWindow("Lena",CV_WINDOW_AUTOSIZE);
imshow("Lena",M);
waitKey();
// Crop out rectangle from (100,100) of size (200,200) of the red channel
const int offset[2] = {100,100};
const int dims[2] = {200,200};
Mat Red(dims[0],dims[1],CV_8UC1);
// Read it from M into Red
uchar* lena = M.data;
for(int i=0;i<dims[0];++i)
for(int j=0;j<dims[0];++j)
{
// P = i*rows*channels + j*channels + c
Red.at<uchar>(i,j) = *(lena + (i+offset[0])*M.rows*M.channels() + (j+offset[1])*M.channels()+0);
}
//Display
namedWindow("RedRect",CV_WINDOW_AUTOSIZE);
imshow("RedRect",Red);
waitKey();