像素初探
本文由@星沉閣冰不語出品,轉(zhuǎn)載請注明作者和出處。
文章鏈接:http://blog.csdn.net/xingchenbingbuyu/article/details/50708765
安裝ImageWatch之后,對于圖片每一個點的像素值一目了然。由于之前對于像素點的操作老是出現(xiàn)各種問題,比如上次想要實現(xiàn)矩形圖片的對角線切割就是一直沒能成功。今天借助IamgeWatch正好探究下Mat數(shù)據(jù)結構中像素到底是怎么訪問的。
我用了一種比較直觀的方式來訪問像素。即利用at函數(shù):
[cpp]?view plaincopy print?
分別提取(2,3)、(3,2)和Point(2,3)、Point(3,2)的像素值。同時分別提取了三通道的BGR值。
結果如下:
可以看到Point(3,2)和(2,3)的像素值相同,Point(2,3)和(3,2)的值相同。從右邊的ImageWatch可以看出Point(2,3)才是符合我們常規(guī)思維的坐標點。(其實點是(0,0))。
所以image.at<Vec3b>(Point(x,y)) =?image.at<Vec3b>(y,x) 。
繼續(xù)往下看:
等等!BGR三通道分別是1,A,k是什么鬼?說好的[ 49,65,107]呢?搜索下OpenCV的官方教程文檔,發(fā)現(xiàn)下面這句話:
發(fā)現(xiàn)Vec3b原來是uchar類型數(shù)據(jù),上網(wǎng)找了個ASCII碼對照表一對比,果然【1,A,k】就對應著【49,65,107】。
但是如果像素值大于127的話,這種方式就不能輸出像素值了,考慮到這只喵星人身上白色部分的像素值大于127,于是提取(400,300)點的像素值,果然什么也沒有顯示出來。
把他們轉(zhuǎn)換成int型呢
[cpp]?view plaincopy print?
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!
總結
- 上一篇: Python 的字符串内建函数
- 下一篇: cogs 1456. [UVa 1088