咨询热线:15898420134 联系人:胡一鸣 地址:河南省郑州市金水区经三路广电南路鑫苑金融广场金座1813A
图像处理和OpenCV初步
来源:BOB备用导航 发布时间:2019-11-12 点击量:145
图像从数学和计算机的角度理解就是一个矩阵
,矩阵中的每一个元素叫做像素
,又由于图像有灰度图像和彩色图像之分,所以图像在矩阵的基础上引入通道(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); // wait for a key pressed // 从函数中获取一个灰度图像 cv::Mat gray= function(); cv::imshow("Image", gray); // show the image cv::waitKey(0); // wait for a key pressed // 作为灰度图像读入 image1= cv::imread("puppy.bmp", CV_LOAD_IMAGE_GRAYSCALE); // convert the image into a floating point image [0,1] image1.convertTo(image2,CV_32F,1/255.0,0.0); cv::imshow("Image", image2); // show the image // Test cv::Matx // a 3x3 matrix of double-precision cv::Matx33d matrix(3.0, 2.0, 1.0, 2.0, 1.0, 3.0, 1.0, 2.0, 3.0); // a 3x1 matrix (a vector) cv::Matx31d vector(5.0, 1.0, 3.0); // multiplication cv::Matx31d result = matrix*vector; std::cout << result; cv::waitKey(0); // wait for a key pressed return 0;}
灰度图像
一个通道的图像就是灰度图像,就是类似以前的老照片,不是彩色的,也可以理解成黑白的。
OpenCV中对灰度图像的处理// 作为灰度图像读入image1= cv::imread("puppy.bmp", CV_LOAD_IMAGE_GRAYSCALE);// 创建灰度图像 cv::Mat ima(500,500,CV_8U,50);//0表示灰度图像cv::Mat image2= cv::imread("boldt.jpg",0);//0表示灰度图
彩色图像
对彩色图像而言,需要用三原色数据来重现不同的可见色。
这是因为人类的视觉系统是三原色的,视网膜上有三种类型的视锥细胞,它们将颜色信息传递给大脑。
所以彩色图像的每个像素都要对应三个数值。在摄影和数字成像技术中,常用的主颜色通道是红色、绿色和蓝色,因此每三个 8 位数值组成矩阵的一个元素,特别说明,8 位通道通常是够用的,但有些特殊的应用程序需要用 16 位通道(医学图像就是用16位通道表示)。
OpenCV对图像的读入#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>int main(){ // open the image cv::Mat image= cv::imread("boldt.jpg",1); // display result cv::namedWindow("Image1"); cv::imshow("Image1",image); // write on disk cv::imwrite("salted.bmp",image); cv::waitKey(); // test second version cv::Mat image2= cv::imread("boldt.jpg",0);//0表示灰度图 cv::namedWindow("Image2"); cv::imshow("Image2",image2); cv::waitKey(); return 0;}
相关产品
-
1958年8月25日,日清食品开始发售世界上第一款方便面“鸡汤拉面”。为表示纪念,从1982年起,这一天也被日本即席食品工业协会定为“方便面日”。
-
此外,Form还谈到了《毁灭公爵》的电影风格,他认为限制级电影的《死侍》是一个很好的例子,《死侍》拥有自己的独特风格而且最后大获成功。所以他们会好好考虑《毁灭公爵》的电影风格,没想清楚之前他们不会贸然开始制作。而且毁灭公爵这一角色也十分“三俗”,所以也得考虑到如何在原有风格上进行一些改变,让他更容易被人接受。
-
镁光灯下的刘晓庆珠光宝气,娇好的面容,被称逆生长。然而最近有记者在机场拍到刘晓庆赶飞机着装随意土气,皮肤松弛双下巴显老态。
-
在他看来,透过两岸两会制度性协商的有效运作,如何务实探讨也解决两岸相关的议题,来维护两岸民众的权益和福祉,更透过两会的对话协商,累积两岸的互信,这是两岸未来非常重要的工作。
-
优信二手车通过赋能车商,让与优信紧密合作的十万中小车商具备专业的检测和定价能力,并可以为所售车辆提供售后服务,以产品和服务实现售前车源的规范管理以及售后的完善质保服务。同时,优信率先在行业内推出“优信认证”服务承诺保障消费者购车权益,事故车30天包退,1年或2万公里的质保,真正让消费者在购车、用车过程中无后顾之忧。
-
2014年6月,加拿大废除了一项类似的投资移民签证计划,该计划积压下来的大批申请也被废止。加拿大表示,该计划没有像预期那样让该国受益,还“低估了”加拿大公民资格的价值。
-
伊达表示,他有可能考虑与苹果的竞争对手合作,包括谷歌Android Pay。移动支付行业的竞争不断加剧,摩根大通也计划在今年我晚些时候推出自己的移动钱包,沃尔玛也将在全美范围内推出支付服务。
-
其实,下线检测的过程中除了那些用专业设备进行的测试外,也有一些方法简单且没有设备和场地门槛的测试。在长安福特的厂区内,通过半天时间我向专业测试人员学到了一些小知识,这也就是今天想为每位消费者分享的挑车小攻略!(那些用眼睛能看出来的外内饰件瑕疵现象就不说了),下面来一起瞅瞅吧!
热点资讯
- 美国进口/拜耳旗下,Oneaday男士复合维生素片100粒49元(70元券)2019-11-10
- 化妆师巧用避孕套做道具COS章鱼哥毫无违和感2019-11-06
- 日本新版防御计划大纲:发展真正的航空母舰,强调跨区域作战能力2019-06-26
- 任天堂已经被德国消费者权利组织起诉,要求退还预购商店的费用。2019-06-26
- 百花争艳诗词共赏《魔域》花魁以诗会友谁能应答2019-11-06
- [天猫超市]合家欢9袋定制款,百草味坚果大礼包1460g装78元2019-06-26
- 科技股参考|Netflix二季度财报表现不佳股价大跌2019-06-26
- 发力智能健康卫浴产业智能健康厨卫研发中心落户和成苏州工厂2019-11-12