图像处理和OpenCV初步

 图像从数学和计算机的角度理解就是一个矩阵,矩阵中的每一个元素叫做像素,又由于图像有灰度图像和彩色图像之分,所以图像在矩阵的基础上引入通道(channel),其中色彩用数字来表示的时候,规定数字0表示黑色,数字255表示白色。

OpenCV角度来看图像

OpenCV中的cv::Mat类就是用来表示图像的矩阵而存在的,其中cv::Mat类由头部数据块组成。

  • 头部包含了矩阵的所有相关信息(大小、通道数量、数据类型等),cv::Mat 头部文件的某些属性(例如cols、rows 或 channels)。头部有一个指向 数据块的指针,即 data 属性。

  • 数据块包含了图像中所有像素的值。

cv::Mat有一个很重要的属性,即只有在明确要求时,内存块才 会被复制。实际上,大多数操作仅仅复制了cv::Mat的头部,因此多个对象会指向同一个数据块。这种内存管理模式可以提高应用程序的运行效率,避免内存泄漏,

 #include <iostream> #include <opencv2/core.hpp>  #include <opencv2/highgui.hpp>  // 测试函数,它创建一幅图像 cv::Mat function() {     // 创建图像      cv::Mat ima(500,500,CV_8U,50);      // 返回图像       return ima; }  int main() {      // // 创建一个 240 行×320 列的新图像     cv::Mat image1(240,320,CV_8U,100);     // or:     // cv::Mat image1(240,320,CV_8U,cv::Scalar(100));      cv::imshow("Image", image1); // show the image     cv::waitKey(0); // wait for a key pressed      // 重新分配一个新图像     // (only if size or type are different)     image1.create(200,200,CV_8U);     image1= 200;      cv::imshow("Image", image1); // show the image     cv::waitKey(0); // wait for a key pressed      // create a red color image     // channel order is BGR     cv::Mat image2(240,320,CV_8UC3,cv::Scalar(0,0,255));      // or:     // cv::Mat image2(cv::Size(320,240),CV_8UC3);     // image2= cv::Scalar(0,0,255);      cv::imshow("Image", image2); // show the image     cv::waitKey(0); // wait for a key pressed      // read an image     cv::Mat image3=  cv::imread("puppy.bmp");      // all these images point to the same data block     cv::Mat image4(image3);     image1= image3;      // these images are new copies of the source image     image3.copyTo(image2);     cv::Mat image5= image3.clone();      // transform the image for testing     cv::flip(image3,image3,1);      // check which images have been affected by the processing     cv::imshow("Image 3", image3);     cv::imshow("Image 1", image1);     cv::imshow("Image 2", image2);     cv::imshow("Image 4", image4);     cv::imshow("Image 5", image5);     cv::waitKey(0)
                    
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信