Tag: 图像处理

在OpenCV中使颜色完全透明

我有一个基本的png文件,里面有两种颜色,绿色和洋红色。 我要做的是拍摄所有洋红色像素并使它们透明,以便我可以将图像合并到另一个图像中。 例如,如果我在洋红色背景上有2D角色的图像文件。 我会删除背景中的所有洋红色,使其透明。 从那里我只需要拍摄角色的图像并将其作为一个图层添加到另一个图像中,这样就可以将角色放置在一个环境中。 提前致谢。

这种RGB到XYZ色彩空间转换算法有什么问题?

我的目标是将RGB像素转换为CIELab色彩空间,以便在CIELab中进行一些特殊的计算。 为此,我必须首先将RGB转换为XYZ,这是非常困难的部分。 我试图在Objective-C中实现这个算法(虽然大多使用普通的C),但结果是错误的。 我的代码基于easyrgb.com提供的伪实现。 他们有一个在线颜色转换器,工作得很好。 他们说他们的伪代码与他们的转换器中使用的伪代码相同。 这是他们的伪代码: var_R = ( R / 255 ) //R from 0 to 255 var_G = ( G / 255 ) //G from 0 to 255 var_B = ( B / 255 ) //B from 0 to 255 if ( var_R > 0.04045 ) var_R = ( ( var_R + […]

在OpenCV中训练SIFTfunction

我创建了一个小型SIFT应用程序,它抓取关键点并将其保存到文本文件中。 我使用它来从徽标(例如AT&T)获取信息,并使用它来与具有该徽标的其他图像进行比较。 问题是我的许多图像都有徽标的变化,由于缩放,旋转或照明,它不会捡起它。 我想知道是否有可能获得一组图像,抓住它的关键点,并通过某种训练算法运行它来增强检测。 我在网上搜索了培训SIFT关键点的方法,但它们都在某种博士论文中,这些论文都涉及到所有这些数学算法,老实说,因为我没有参加任何数学课程。 如果有人有任何建议或链接,以便能够了解培训的工作原理或需要做些什么来实施,请告诉我。 或者,如果有人在没有SIFT的情况下有更简单的方法,那么我会非常感谢其他forms的检测。 以下列出了我尝试过的内容: 冲浪 因为返回无效结果而失败 Haar特征与Adaboosting 因为我在2011年7月11日开始训练100张带有100张负片的正面模型而失败,并且截至2011年7月19日仍在运行 模板与具有和不具有阈值的相同徽标的各种变换匹配 失败,因为我必须根据它无法在图像中检测任何内容的次数指数地创建徽标 提前致谢

图像下采样算法

什么是我可以用来将图像分成原始大小的一半的最佳重采样算法。 速度是最重要的,但它不应该降低质量太差。 我基本上试图生成图像金字塔。 我本来打算跳过像素。 这是最好的方式吗? 从我所看到的,像素跳过产生的图像太尖锐了。 可能有人试过这个评论。 我的图片包含这样的地图数据。

在C中将PPM从RGB转换为HSL

对于我的学术课程,我需要有关RGB图像文件中的直方图均衡的帮助。 我查看了我之前关于直方图均衡的代码示例,但我没有找到任何有关此问题的线索。 我从未练习过直方图均衡示例,即RGB图像。 图像是PPM文件。 因此,我们需要将文件从RGB转换为YCbCr,从RGB转换为HSI。 然后,我们需要在图像为YCbCr和HSI格式时进行直方图均衡。 之后,我们需要再次将PPM文件转换为RGB格式。 而已。 *void write_image function is writing the data to the pnr.ppm* *void get_image_data function is getting the image that is mandrill1.ppm* 我们只需要指定代码: #include #include #include #include #include #include #include #include #include #define PI 3.1415926535897932384626433832795 struct ppm_header { char pgmtype1; char pgmtype2; int pwidth; int pheight; int pmax; }; […]

如何在从ORIGINAL-IMAGE中提取的SUB-IMAGE中执行模板匹配过程并在原始图像中显示结果

一整天我已经尝试了很多东西来获得子图像中的所有相关匹配(带有matchtemplate函数),这是我已经使用mousecallback函数从原始图像中提取的ROI。 所以我的代码在下面是匹配function ////Matching Function void CTemplate_MatchDlg::OnBnTemplatematch() { namedWindow(“reference”,CV_WINDOW_AUTOSIZE); while(true) { Mat ref = imread(“img.jpg”); // Original Image mod_ref = cvCreateMat(ref.rows,ref.cols,CV_32F);// resizing the image to fit in picture box resize(ref,mod_ref,Size(),0.5,0.5,CV_INTER_AREA); Mat tpl =imread(“Template.jpg”); // TEMPLATE IMAGE cvSetMouseCallback(“reference”,find_mouseHandler,0); Mat aim=roiImg1.clone(); // SUB_IMAGE FROM ORIGINALIMAGE // aim variable contains the ROI matrix // next, want to perform template […]

更好的video编程边缘滤波算法

我还在研究最后一个程序 ,虽然我终于找到了如何解决问题(关于如何过滤最大轮廓),但我现在有了一个新问题,或者更确切地说是一个问题。 如您所见,我正在使用Canny算法搜索video中的边缘。 但是我将用于检测的对象没有特定的颜色,因此当对象的颜色与周围的颜色大致相同时(例如,如果对象是silverlight并且背景为白色),对象的边缘将消失,我无法获得物体的轮廓。 现在我将测试OpenCV中可用的每个边缘过滤算法,但为了减少我的工作时间,我需要你的帮助来推荐最好的(或至少更好的)算法而不是canny 。 现在我已经测试了Sobel,但结果并不比canny好。 如果可能的话,请链接我一些好的例子以供参考。 代码: int main( int argc, char** argv ) { CvCapture *cam; CvMoments moments; CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* contours = NULL; CvSeq* contours2 = NULL; CvPoint2D32f center; int i; cam=cvCaptureFromCAM(0); if(cam==NULL){ fprintf(stderr,”Cannot find any camera. \n”); return -1; } while(1){ IplImage *img=cvQueryFrame(cam); if(img==NULL){return -1;} IplImage *src_gray= cvCreateImage( […]

用C / C ++旋转图像

我需要用C ++旋转图像的代码,其function类似于matlab的imrotate函数。 请建议一个很好的链接。 或者,如果有人可以提供imrotate的代码。 或者至少请解释一下算法。 它不是一个功课。 我的项目需要这个代码。 我们可以使用任何外部库或代码。

寻找OpenCV教程

有谁知道你可以推荐的一些好的易学的openCV c / c ++教程? 我试过谷歌,但我对结果不太满意。

仿射变换,简单旋转和缩放或其他完全?

场景是这样的:我有一张纸的图片,我想做一些OCR。 因此,请将下面的图片作为我的输入示例: 在成功检测到与纸张对应的区域后,我留下了一个4个坐标的vector ,用于定义图像内部的位置。 请注意,由于摄像机的距离和拍摄照片时的角度,这些坐标可能与完美的矩形不对应。 出于查看目的,我连接了子图像中的点,以便您可以看到我的意思: 在这种情况下,要点是:[1215,43],[52,67],[56,869]和[1216,884] 此时,我需要调整这些点,使它们水平对齐。 那是什么意思? 如果您注意到上面子图像的区域,则会稍微旋转:图像右侧的点位置略高于另一侧的点。 换句话说,我们有图像A ,它被夸大了,看起来比现实更加扭曲/旋转,然后是图像B – 这就是我想要的最终结果: 一个) B) 我不确定可以使用哪种技术来实现这种转换。 应用程序还需要自动检测需要完成多少旋转,因为我无法控制图像采集过程。 目的是使用带有规范化子图像的新Mat 。 我现在并不担心可能的图像失真,我只是想找到一种方法来确定需要对子图像进行多少旋转以及如何应用它并获得更矩形的区域 。