C++相当于 OpenCV 的 cvConvertImage
我正在寻找 OpenCV 中 cvConvertImage
的 C++ 等效项。
cvConvertImage(const CvArr* src, CvArr* dst, int flags=0)
具体来说,我有一个 cv::Mat
图像,其中红色和蓝色通道翻转,我希望将它们交换回来。在 cvConvertImage 中,您可以通过将标志设置为 CV_CVTIMG_SWAP_RB 来实现此目的。
I'm looking for the C++ equivalent of cvConvertImage
in OpenCV.
cvConvertImage(const CvArr* src, CvArr* dst, int flags=0)
Specifically, I have a cv::Mat
image with the red and blue channels flipped, and I wish to swap them back. In cvConvertImage you can do this by setting flags to be CV_CVTIMG_SWAP_RB
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
迟到的答案,但如果您想交换
R
和,您可以使用
cv::cvtColor(...)
和选项CV_BGR2RGB
B。如果您想要更复杂的操作
mixchannels
是正确的选择Late answer, but you can use
cv::cvtColor(...)
with optionCV_BGR2RGB
if you want to swapR
andB
.If you want more complex operations
mixchannels
is the way to go我认为<一href="http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html#void%20mixChannels%28const%20M在%2a%20src、%20int%20nsrc、%20Mat%2a%20dst、%20int%20ndst、%20const%20int%2a%20fromTo、%20size_t%20npairs%29" rel="nofollow">mixChannels() 就是您要寻找的。
I think mixChannels() is what you're looking for.
要访问单个像素,请参阅提取单个像素数据的最快方法?
那么只需交换红色/蓝色值即可
TO access individual pixels see Fastest way to extract individual pixel data?
Then it's just a matter of swapping the red / blue values
我不知道 C++ 接口中有任何方法可以执行此操作,但如果您不想像 @Martin 建议的那样进行手动交换,您仍然可以将
cv::Mat
转换为IplImage
并使用cvConvertImage
为您完成这项工作:I don't know any method in the C++ interface to do this, but if you don't want to do a manual swap like @Martin suggested, you can still convert
cv::Mat
toIplImage
and usecvConvertImage
to do the job for you: