Mat imread(const string& filename, intflags=1 );
flags:
enum
{
/* 8bit, color or not */
CV_LOAD_IMAGE_UNCHANGED =-1,
/* 8bit, gray */
CV_LOAD_IMAGE_GRAYSCALE =0,
/* ?, color */
CV_LOAD_IMAGE_COLOR =1,
/* any depth, ? */
CV_LOAD_IMAGE_ANYDEPTH =2,
/* ?, any color */
CV_LOAD_IMAGE_ANYCOLOR =4
};
Mat image0=imread("dota.jpg",CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);//载入最真实的图像
Mat image1=imread("dota.jpg",0);//载入灰度图
Mat image2=imread("dota.jpg",199);//载入3通道的彩色图像
Mat logo=imread("dota_logo.jpg");//载入3通道的彩色图像
void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE );
void imshow(const string& winname, InputArray mat);
c++
python
image.at(j,i)= value; //单通道
image.at(j,i)[channel]= value; //三通道
image.at(j,i) = cv::Vec3b(a,b,c);
cv::Mat_<uchar> image(image1);
image(20,30) = value;
uchar *data = image.ptr(i); //ptr()返回行的地址
for (int i = 0; i < height; i++) {
cv::Vec3b* row = image.ptr(i);
for (int j = 0; j < width; j++) {
cv::Vec3b& pixel = row[j];//Vec3b&直接操作图像中的像素值,而不需要创建新的对象
std::cout << "Pixel at (" << i << "," << j << "): "
<< "B=" << (int)pixel[0] << " "
<< "G=" << (int)pixel[1] << " "
<< "R=" << (int)pixel[2] << std::endl;
}
}
cv::MatIterator_ it;
或者
cv::Mat_::iterator it;
cv::MatIterator_ it, end;
for (it = image.begin(), end = image.end(); it != end; ++it) {
cv::Vec3b& pixel = *it;
pixel[0] = 255;
pixel[1] = 0;
pixel[2] = 0;
}
python
c++
double cv::threshold(src, OutputArray, thresh, maxval, type)
c++:
python:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
C++: void split(const Mat& src, Mat*mvbegin);
C++: void split(InputArray m,OutputArrayOfArrays mv);
C++: void merge(const Mat* mv, size_tcount, OutputArray dst)
C++: void merge(InputArrayOfArrays mv,OutputArray dst)
python
Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系。Gamma矫正用于调整图像的亮度和对比度
。Gamma矫正可以改变图像的灰度值分布,使图像在显示时看起来更加自然和逼真。通常情况下,人眼对亮度的感知是非线性的,因此使用Gamma矫正可以更好地模拟人眼的感知特性。
V o u t = A V i n γ V_{out}=AV_{in}^\gamma Vout=AVinγ
γ的值决定了输入图像和输出图像之间的灰度映射方式,即决定了是增强低灰度值区域还是增高灰度值区域。
γ>1时,图像的高灰度区域对比度得到增强,直观效果是一幅偏亮的图变暗了下来。
γ<1时,图像的低灰度区域对比度得到增强,直观效果是一幅偏暗的图变亮了起来。
python
c++
浅拷贝是指当图像之间进行赋值时,图像数据并未发生复制,而是两个对象都指向同一块内存块。
深拷贝是指新创建的图像拥有原始图像的崭新拷贝
c++
python