Tag: opencv

如何在C中调整OpenCV中的对比度?

我只是试图调整灰度图像中的对比度/亮度,用C中的Opencv突出显示该图像中的白色。我该怎么做? 是否有任何function在opencv中完成此任务? 原始图片: 修改后的图片 提前致谢!

使用C中的OpenCV定义图像ROI

我有一个关于如何使用OpenCV定义ROI的问题。 我知道函数cvSetImageROI的定义,但我想知道是否可以使用与矩形不同的OpenCV定义ROI。 例如,以圆圈或不同forms定义ROI。 有可能这样做吗? cvSetImageROI(img1,cvRect(a,b,c,d));

OpenCV:将内存中的指针转换为图像

我有一个抓取器可以获取图像并使用以下代码在屏幕上显示它们 while((lastPicNr = Fg_getLastPicNumberBlockingEx(fg,lastPicNr+1,0,10,_memoryAllc))<200) { iPtr=(unsigned char*)Fg_getImagePtrEx(fg,lastPicNr,0,_memoryAllc); ::DrawBuffer(nId,iPtr,lastPicNr,"testing"); } 但我想使用指向图像数据的指针并用OpenCV显示它们,因为我需要对像素进行处理。 我的相机是CCD单色相机,像素的深度是8位。 我是OpenCV的新手,opencv中是否有任何选项可以返回(unsigned char *)Fg_getImagePtrEx(fg,lastPicNr,0,_memoryAllc); 并在屏幕上显示它? 或者从iPtr指针获取数据允许我使用图像数据?

寻找OpenCV教程

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

OpenCV:如何加载4个通道的png图像?

我一直试图加载具有透明度通道(RGB和Alph)的.png文件而没有运气。 似乎openCV剥离了图像中的第4个通道。 是否有任何方法使用包括alpha通道在内的完整4个通道加载图像,即使我必须修改OpenCV源代码并重建它

我想在OpenCV中将图像转换为铅笔草图

我试图将图像(从我的硬盘驱动器)转换为OpenCV中的铅笔草图。 我正在使用Visual Studio 2010.我开始了解以下步骤。 反转图像(使负面) 应用高斯模糊 。 通过线性闪避或颜色闪避来混合上面的图像。 我已完成前两个步骤(非常简单)。 现在我需要有关如何在C中进行线性闪避的信息。 编辑添加… 我为铅笔素描制作了以下代码。 但它是否会制作铅笔素描? 请看结果。 我怎样才能让它变得更好? int main( int argc, char** argv ) { int col_1, row_1; uchar b_1, g_1, r_1, b_2, g_2, r_2, b_d, g_d, r_d; IplImage* img = cvLoadImage( “input file”); IplImage* img1 = cvCreateImage( cvSize( img->width,img->height ), img->depth, img->nChannels); IplImage* img2 = cvCreateImage( […]

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

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

OpenCV点目标检测未找到所有目标,并发现圆圈是偏移的

我正试图检测黑/白点目标的中心,就像在这张照片中一样。 我试过使用cv2.HoughCircles方法,但是1,我只能检测2到3个目标,2,当我将找到的圆绘制回图像时,它们总是略微偏移。 我使用了错误的方法吗? 我应该使用findContours还是完全不同的东西? 这是我的代码: import cv2 from cv2 import cv import os import numpy as np def showme(pic): cv2.imshow(‘window’,pic) cv2.waitKey() cv2.destroyAllWindows() im=cv2.imread(‘small_test.jpg’) gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) #I’ve tried blur,bw,tr… all give me poor results. blur = cv2.GaussianBlur(gray,(3,3),0) n,bw = cv2.threshold(blur,120,255,cv2.THRESH_BINARY) tr=cv2.adaptiveThreshold(blur,255,0,1,11,2) circles = cv2.HoughCircles(gray, cv.CV_HOUGH_GRADIENT, 3, 100, None, 200, 100, 5, 16) try: n = np.shape(circles) circles=np.reshape(circles,(n[1],n[2])) […]

OpenCV cvFindContours – 如何分离轮廓的组件

我一直在玩OpenCV,并且有很多试验和错误已经设法学习如何检测照片中的圆圈(硬币)。 一切都很好,除非我直接将硬币放在一起(如下所示,忽略了第二张图像倒置的事实)。 看来因为cvFindContours认为它们是同一个对象。 我的问题是如何将这些轮廓分成不同的对象,或者获取已经分离的轮廓列表。 我用于cvFindContours的参数是: cvFindContours( img, storage, &contour, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0, 0) ); 任何帮助或建议将不胜感激。

Contours opencv:如何消除二进制图像中的小轮廓

我目前正在从事图像处理项目。 我在VC ++中使用Opencv2.3.1。 我编写了这样的代码,输入图像被过滤为仅蓝色并转换为二进制图像。 二进制图像有一些我不想要的小物体。 我想消除那些小对象,所以我使用openCV的cvFindContours()方法来检测二进制图像中的轮廓。 但问题是我无法消除图像输出中的小物体。 我使用了cvContourArea()函数,但没有正常工作..,侵蚀function也无法正常工作。 所以请有人帮我解决这个问题.. 我获得的二进制图像 : 我想要获得的结果/输出图像 :