在opencv,Vec2b,Vec3b中有不同的類型。 Vec4i等等,還有Scalar類型。據我所知,Vec3b和Scalar都是將三個數字一起存儲的類型。所以,如果我想訪問一個像素(RGB格式),我只是在編寫image.at <Vec3b> (x,y)=Vec3b (number, number, number)
,對於Scalar也是如此,但是它們有什麼不同呢,它們有什麼區別嗎?
我在問這個,因爲我在使用Vec3b和Scalar時有一些奇怪的經歷,當我起訴標量時(我試圖將一些像素轉換成灰度但將圖像保留爲RGB格式)通過這樣做 image.at<Scalar>(x,y)=Scalar(gray_image.at<uchar>(x,y), gray_image.at<uchar>(x,y), gray_image.at<uchar>(x,y));
(我有灰度圖中的相同圖像稱爲gray_image),但這似乎給出了一些奇怪的結果,另一方面,當我使用Vec3b而不是標量時,我得到了正常的結果。爲什麼會發生?在opencv中Vec3b和Scalar有什麼區別?
2
A
回答
3
根據http://docs.opencv.org/modules/core/doc/basic_structures.html甲Scalar_
是用於從Vec
衍生的4元件矢量
模板類。
哪個
正在從
Vec<_Tp, 4>
,Scalar_
和Scalar
衍生可用於就像典型的4元素矢量。另外,它們可以轉換爲/從CvScalar
。類型Scalar
被廣泛用於OpenCV來傳遞像素值。
凡作爲Vec
是:
而且
的
Vec
類通常用於:爲短的數值向量,的Matx
部分殼體模板類來描述多通道陣列的像素類型。詳情請參閱
Mat
。所以他們是和不是一樣的。
相關問題
- 1. opencv,python-opencv和libopencv有什麼區別?
- 2. openCV和cv2有什麼區別?
- 3. OPENCV中cvtype值有什麼區別?
- 4. 矢量<Vec3b>與OpenCV中的Vector <int>的區別
- 5. 有什麼區別`和$(Bash中有什麼區別?
- 6. 一些OpenCV命令有什麼區別?
- 7. OpenCV中kmeans和cvKMeans2算法有什麼區別?
- 8. opencv中調整大小和pryDown/pryUp有什麼區別?
- 9. OpenCV中的vc10,vc11和vc12庫有什麼區別?
- 10. EmguCV和OpenCV中的HoughCircles之間有什麼區別?
- 11. OpenCV庫中的Mali OpenCL SDK和OpenCL有什麼區別
- 12. 在Prolog中==和= =有什麼區別?
- 13. =和在mysql中有什麼區別?
- 14. `|。有什麼區別? `和`|| `在java中?
- 15. &和|有什麼區別?在Linux中?
- 16. |有什麼區別?和||在MATLAB中?
- 17. 〜/和〜在linux中有什麼區別?
- 18. *和。*在matlab中有什麼區別?
- 19. < - 和=在data.frame中有什麼區別?
- 20. 在PHP中!==和!=有什麼區別?
- 21. &&和||有什麼區別?在JavaScript中?
- 22. 在Ember.js中,[]和Ember.A([])有什麼區別?
- 23. 在JavaScript中,'\'和'\ n'有什麼區別?
- 24. !=和=!有什麼區別!在Java中?
- 25. 有什麼區別? :和||
- 26. &&和||有什麼區別?
- 27. 「/」和「/ *」有什麼區別?
- 28. 有什麼區別:。!和:r!?
- 29. ==和===有什麼區別?
- 30. Appender和〜有什麼區別?
另外,儘可能使用'Mat1b','Mat3b'等,以避免'.at' –
Miki
標量是典型的代表BGRA值的4個元素,主要用作INPUT元素,其中函數只使用需要的標量。 – Micka