我正在尝试使用cvtcolor
方法将BGR转换为YUV,然后获取对每个组件的引用。源图像(IplImage1
)具有以下参数:
转换并获取转换后的组件:
IplImage* yuvImage = cvCreateImage(cvSize(1620, 1220), 8, 3);
cvCvtColor(IplImage1, yuvImage, CV_BGR2YCrCb);
yPtr = yuvImage->imageData;
uPtr = yPtr + height*width;
vPtr = uPtr + height*width/4;
我有一个方法可以将YUV转换回RGB并保存到文件。当我手动创建YUV组件时(我创建蓝色图像),它可以工作,当我打开图像时,它实际上是蓝色的。但是,当我使用上面的方法创建YUV组件时,我得到了黑色图像。我想可能是我错误地引用了YUV组件
yPtr = yuvImage->imageData;
uPtr = yPtr + height*width;
vPtr = uPtr + height*width/4;
会有什么问题?
而RGB表示颜色为红色、绿色和蓝色;YCbCr颜色模型将颜色表示为亮度和两个色差信号。在YCbCr中,Y是亮度(luma),Cb是蓝色减去luma(B-Y),Cr是红色减去luma(R-Y)。
如果您使用OpenCV 3.0.0,下面是相同的代码:
import numpy as np
import cv2
#Obtaining and displaying the image
x = 'C:/Users/524316/Desktop/car.jpg'
img = cv2.imread(x, 1)
cv2.imshow("img",img)
#converting to YCrCb color space
YCrCb = cv2.cvtColor(a, cv2.COLOR_BGR2YCrCb)
cv2.imshow("YCrCb",YCrCb)
#splitting the channels individually
Y, Cr, Cb = cv2.split(YCrCb)
cv2.imshow('Y_channel', Y)
cv2.imshow('Cr_channel', Cr)
cv2.imshow('Cb_channel', Cb)
cv2.waitKey(0)
cv2.destroyAllWindows()
原始图像:
YCrCb图像:
Y-通道:
它与灰度图像相同
Cr-频道:
Cb-频道:
如果您确实必须使用IplImage(例如,在遗留代码或C中),则使用cvSplit
IplImage* IplImage1 = something;
IplImage* ycrcbImage = cvCreateImage(cvSize(1620, 1220), 8, 3);
cvCvtColor(IplImage1, ycrcbImage, CV_BGR2YCrCb);
IplImage* yImage = cvCreateImage(cvSize(1620, 1220), 8, 1);
IplImage* crImage = cvCreateImage(cvSize(1620, 1220), 8, 1);
IplImage* cbImage = cvCreateImage(cvSize(1620, 1220), 8, 1);
cvSplit(ycrcbImage, yImage, crImage , cbImage, 0);
现代方法是避免传统API,使用Mats:
cv::Mat matImage1(IplImage1);
cv::Mat ycrcb_image;
cv::cvtColor(matImage1, ycrcb_image, CV_BGR2YCrCb);
// Extract the Y, Cr and Cb channels into separate Mats
std::vector<cv::Mat> planes(3);
cv::split(ycrcb_image, planes);
// Now you have the Y image in planes[0],
// the Cr image in planes[1],
// and the Cb image in planes[2]
cv::Mat Y = planes[0]; // if you want
问题内容: 我不知道NetworkX最近是否将其中一种方法调整为生成器,而不是返回列表,但是我正在寻找一种获取图形GC的好方法。 我有一个工作片段,但看起来效率很低: 有没有更清洁的方法? 问题答案: 在networkx 1.9中,返回迭代器(而不是排序列表)。迭代器产生的值未按排序顺序。所以要找到最大的,使用: 排序为O(n log n)。取最大值为O(n)。
问题内容: 我正在使用php中的分页进行搜索功能,下面是我的代码,但是每当我单击下一个链接时,搜索查询都不会采用通过POST传递的变量。你能帮我么.. 问题答案: 您的代码中有几个问题。 第一的: 您使用的变量不正确。您有,但您应该使用与变量相同的方式,如下所示: 第二: 您正在解释“发布”的概念,并错误地单击了链接。您需要使用下一个和上一个按钮进行的操作是一个隐藏的表单,其中包含您需要的所有
问题内容: 是否可以将值作为数组输入? 如果我尝试使用发送链接,而我想在php端使用,那么该值如何成为数组?因为现在正在返回。它是标题链接中的最后一个ID。有什么建议么? 问题答案: 在PHP中执行此操作的通常方法是输入您的URL而不是: 然后将是这些值的数组。它不是特别漂亮,但是可以直接使用。
问题内容: 有一个问题- 我的主要活动是启动服务,然后关闭。当应用程序下次启动时,该应用程序应获得对该服务的引用并停止它。但是我不知道如何获得正在运行的服务的引用。拜托,我希望你能帮助我。谢谢。 问题答案:
我正在做一个程序,它将计算一些东西,例如,我需要知道有多少员工是女性,它是在一个文件,我读取并保存在一个字符串数组。保存在数组中的数据为F为女性,M为男性。我怎么统计数组里面有多少个F(女)?我已经设置好了所有的东西,我需要知道的是如何计算数组中的值,数组中的特定值(只是F),而不是所有的值。 这是读取性别的代码(在示例中使用): 这是用来存储它们的变量: Gender.txt文件是这样的:
问题内容: 如何在Java Swing中获得面板的所有组件? 有没有像C#这样的方法来处理JPanel的所有子组件? 问题答案: 您可以使用以下方法: