咨询热线:18866501893 联系人:董磊 地址:长沙雨花区韶山北路
图像处理和OpenCV初步
来源:环亚88备用APP 发布时间:2019-11-06 点击量:309
图像从数学和计算机的角度理解就是一个矩阵
,矩阵中的每一个元素叫做像素
,又由于图像有灰度图像和彩色图像之分,所以图像在矩阵的基础上引入通道(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;}
相关产品
-
H6 Coupe的配置还是十分让人满意的,全系标配无钥匙进入及无钥匙启动、倒车影像及后驻车雷达也是标配,前驻车雷达除都市型外也都有配备,同时在我们今天试驾的这款尊贵型上还搭载有右侧盲区辅助功能,通过方向盘上的按键打开后即可实时观测车辆右侧盲区,给驻车及行驶在狭窄路段时带来更大的方便。外观上还有一个比较有特点的地方就是车辆的轮圈,厂牌商标并没有像一般车型一样设计在正中间,看上去颇具个性。不过我觉得如果中间部分还能做一定的修饰,整体效果会更棒。
-
在厦门,花个八九千元请个月嫂已然是稀松平常的事,但如果拿出上万元甚至十几万元到月子中心坐月子,相信仍会让多数人敬而远之。
-
据悉,近几年来,惠州在“智慧政务”、“智慧教育”、“智慧医疗”、“智慧社区”等生活范围已开始快速深入“智慧”的理念,并不断在加快发展物联网、云计算、大数据、新一代无线宽带通信等新技术,推动信息化和工业化深度整合,促进信息化、工业化、城镇化、农业现代化同步发展。而随着“智慧城市”发展不断深入,“无线网络”已成为“智慧城市”构建中重要的组成部分。
-
没多久,班级辅导员来到寝室。王丽等人把刚才的事儿和辅导员一说,发现卖卡女子不是宿舍管理员。王丽等人一起追了出去,没有发现对方的身影,遂向浑南区浑南新城派出所报了警。
-
据台湾“中央社”报道,针对恐怖组织“伊斯兰国”(ISIS)疑似透过官方Twitter账号发布“台北101遭攻击”图片,台当局“行政院”今(25日)晚间表示,已启动反恐紧急联络机制,目前各反恐相关“部会”密切了解讯息,若有必要时会再有进一步因应措施。
-
在他的个人书画展现场,有媒体记者打探价格,张铁林却表示:“我只负责写作品,不负责卖,买卖的事跟我没关系。”据了解,除了喜欢书法之外,张铁林的另一个爱好就是收藏手札。对于网上传言的“张铁林炒高手札市场”的言论,他也否认了。
-
目前,澳超联赛正在进行之中,已经进行了18轮比赛,即便是少赛两场的狮吼队也已经踢了16场。而国安队仅在上周踢了一场亚冠附加赛。开场之后,对手的比赛节奏明显更好一些,前15分钟内控球率高达68%,不过鲜有威胁。
-
据美国汽车媒体Autoblog 1月22日报道,丰田近日在日本发布了全新诺亚(Noah)和沃克西(Voxy)。这两款微面的概念版曾在东京汽车展上亮相,经过重新设计的量产版具有宽敞的车内空间,配备可折叠座椅,是当之无愧的小型MPV佳作。
热点资讯
- 戴尔已向纽约证交所提交上市申请2019-11-05
- 与支付宝合作的印尼媒体巨头Emtek认为,在印尼仍有机会进入支付领域。2019-07-01
- 隐瞒与二股东一致行动人关系华林证券IPO前夕信披追疑2019-07-01
- 终于真相了?无人游轮找到主人渔民在东海发现的无人游轮哪来的?2019-07-01
- 人工智能名片千亿流量加持,喜推FCRM成企业腾飞新“神器”2019-11-06
- 好韭菜成长记2019-11-05
- 你看到足以杀死10B的眼镜蛇了吗?战斗机10B带来另一个惊喜:夜间空中加油!2019-07-01
- 非阻塞Connect2019-07-01