源码如下:
#include <opencv2/opencv.hpp>
int main(int argc, char** argv)
{
? ? cv::Mat img_rgb, img_gry, img_cny;
? ? cv::namedWindow("Example Gray",cv::WINDOW_AUTOSIZE);
? ? cv::namedWindow("Example Canny", cv::WINDOW_AUTOSIZE);
? ? img_rgb = cv::imread(argv[1]);
? ? cv::cvtColor(img_rgb, img_gry, cv::COLOR_BGR2GRAY);? //生成一个和原图一样大小,但只有一个通道的图像,从而将BGR图像转换为灰度值
? ? cv::imshow("Example Gray", img_gry);
? ? cv::Canny(img_gry, img_cny, 10, 100, 3, true);
? ? cv::imshow("Example Canny", img_cny);
? ? cv::waitKey(0);
? ? int x = 16, y = 32;
? ? cv::Vec3b intensity = img_rgb.at<cv::Vec3b>(y, x);
? ? uchar blue = intensity[0];? ? ?//读写像素值 blue
? ? uchar green = intensity[1];? ?//读写像素值 green
? ? uchar red = intensity[2];? ? ? ?//读写像素值 red
? ? std::cout << "At(x,y)=(" << x << "," << y << "):(blue,green,red)=(" << (unsigned int)blue <<
? ? ? ? "," << (unsigned int)green << "," << (unsigned int)red << ")" << std::endl;
? ? std::cout <<"Gray pixel there is:" << (unsigned int)img_gry.at<uchar>(y, x) << std::endl;
? ? x /= 4; y /= 4;
}