Mat类
2025-04-14
2
0
拷贝
浅拷贝:
cv::Mat src = cv::imread("k:\\opencv\\test.jpg");
cv::Mat desc = src;
深拷贝
cv::Mat src = cv::imread("k:\\opencv\\test.jpg");
cv::Mat dest = src.clone();
cv::Mat dest2;
src.copyTo(dest2);
创建纯色MAT
cv::Mat dest3 = cv::Mat::zeros(cv::Size(8, 8), CV_8UC1);
std::cout << dest3 << std::endl;
//8bit unsigned char 3
cv::Mat dest4 = cv::Mat::ones(cv::Size(300, 300), CV_8UC3);//颜色以是BGR形式展示
std::cout << "cols=" << dest4.cols << " rows=" << dest4.rows << " changel=" << dest4.channels() << std::endl;
//分别填充每一像素的值
dest4 = cv::Scalar(10,200,100);
//std::cout << dest4 << std::endl;
像素的编历
code
cv::Mat src = cv::imread("k:\\opencv\\test.jpg");
cv::Mat dest = src.clone();
for (int y = 0; y < dest.cols; y++)
{
for (int x = 0; x < dest.rows; x++)
{
dest.at<cv::Vec3b>(x,y)[0] = 255 - dest.at<cv::Vec3b>(x, y)[0];
dest.at<cv::Vec3b>(x,y)[1] = 255 - dest.at<cv::Vec3b>(x, y)[1];
dest.at<cv::Vec3b>(x,y)[2] = 255 - dest.at<cv::Vec3b>(x, y)[2];
}
}
cv::imshow("gg", src);
cv::imshow("ff", dest);
或
unsigned char * pLine = dest.ptr<uchar>(row);