- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试将 bgr mat 转换为 hsv mat 以进行某些检测,但 hsv 图像不断出现 block 状。这是我在 C++ 中的代码:
int main() {
const int device = 1;
VideoCapture capture(device);
Mat input;
int key;
if(!capture.isOpened()) {
printf("No video recording device under device number %i found. Aborting program...\n", device);
return -1;
}
namedWindow("Isolation Test", CV_WINDOW_AUTOSIZE);
while(1) {
capture >> input;
cvtColor(input, input, CV_BGR2HSV);
imshow("Isolation Test", input);
key = static_cast<int>(waitKey(10));
if(key == 27)
break;
}
destroyWindow("Isolation Test");
return 0;
}
Here是输出结果的快照。当我注释掉 cvtColor 时,输入看起来并不 block 状。问题是什么,我应该如何解决?
最佳答案
我在评论部分提出了解释,但决定实际验证我的假设并解释一些关于 HSV
颜色空间的信息。
代码和OpenCV的cvtColor
都没有问题。 RGB
图像中存在“ block 状”瑕疵,但不明显。所有 JPEG 系列压缩算法都会产生这些伪影。我们通常看不到它们的原因是算法“利用”了我们视觉系统中的弱点并压缩了更多我们不太敏感的东西。
我使用 OpenCVs
cvtColor` 将图像转换回 RGB
,伪像神奇地消失了(图像如下)。
HSV
颜色空间尤其具有几个夸大这些伪像的特征。其中重要的可能是 V
channel (值/亮度)非常低的地方,H
和 S
channel 非常低不稳定并且毫无意义。在极端情况下:[128,255,0] == [0,0,0]
。
因此,图像暗区中非常小且不明显的压缩伪影在 HSV
颜色空间的假色中变得非常突出。
如果您想使用 HSV
颜色空间作为颜色比较的特征空间,请记住如果 V
非常低,H & S
是毫无意义的。对于使 H
值变得毫无意义的非常低的 S
值也是如此 ([0,0,100] == [128,0,100]
) .
顺便说一句。还要记住,H
channel 是循环的,H == 0
和 H == 255
之间的区别只是一个灰度级。
HSV
问题中发布的图像 cvtColor
将图像转换回 RGB
关于c++ - 在 opencv 中将 bgr 转换为 hsv 时的 block 状行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21029451/
我发布了我的第一个网站 ( www.dirkwolthuis.nl)。这是一个包含大量图像和元素的单页网站。在我的 mac 上的 chrome 中,它加载正常并且可以滚动。在 iPad 或 iPhon
我想要一个四分之一圆形的容器,想想整个披萨的四分之一。 我如何实现这一目标?基本上我想将它放在右下角位置的另一个容器顶部,圆形部分朝内,角度当然匹配右下角形成底部容器的位置,使用堆栈小部件。 谢谢。
我刚刚发现了“blockly”,这正是我一直在寻找的将我的 webApp 提升到一个新水平的方法。我遇到的问题是我不太明白如何启动 python 或 js 代码变量。 这是我的 block : Blo
之前回答的问题似乎没有回答我的问题 "Blocky" Perlin noise 我尽量简化以使我的代码易于阅读和理解。 我不使用置换表,而是使用 mt19937 生成器。 我使用 SFML using
我正在使用 blockly 开发代码编辑器,我的页面目前有用于在 block View 和代码 View 之间切换的选项卡,有点像一些所见即所得的编辑器。现在,Blockly 已经有了很多从 bloc
我无法渲染 2d block 状 map 。 这是二维 map 数组的创建方式: map = new Block[w * h]; block 类包含 2 个变量 - 大小(H:100px、W:100p
据我所知,我已经正确嵌入了 @font-face 字体(我已经检查并仔细检查),但我在 IE8 上出现了以前从未经历过的奇怪行为。 在 IE8 上,字体会一闪而过,呈现完美,然后又变得非常 block
我是一名优秀的程序员,十分优秀!